2012-03-25 109 views
1

我有一个Excel文件,我能够从“Excel文件”单元格读取单个单元格并将其存储在ArrayList中。 ExcelRange一次读取一行,将其存储到ArrayList(arrForValues)中。在Excel中写入Excel文件#

ExcelRange = ExcelWorkSheet.get_Range("A"+rowNumber,columnMaxName+rowNumber); 
items = (object[,])ExcelRange.Value2; 

for (int i = 1; i <= nColumn; i++) 
{ 
    arrForValues.Add(items[1, i]); 
} 

我想写行到另一个Excel文件。有一些条件需要满足“特定的行”才能被选中写入。

有没有什么办法可以将完整ArrayList(“单行”)写入ExcelFile,而不是Cell By Cell Wrinting。

在此先感谢。

+0

使用Range.Copy()代替。 – 2012-03-25 13:36:44

回答

1

我在Excel中编写了一些代码。我发现这样做的唯一方法是用foreach遍历我的值列表并使用索引器来跟踪它将要进入的单元格。你可能会研究Range类和Cells属性: http://msdn.microsoft.com/en-US/library/microsoft.office.tools.excel.namedrange.cells(v=vs.80).aspx

它没有为我所做的工作,但它可能适合你。

另一种方法是合并范围的细胞,建立你的数组中的所有值的字符串,并设置合并后的范围值等于字符串,但可能不是你想要的。

+0

谢谢大卫。我合并了一个范围内的单元格,然后做了一个“range.value2 = array”。正是我想要的。 – 2012-03-25 16:54:49

2

我强烈建议刚获得FlexCel。它相当便宜,它具有复制行和列的方法。

编辑:我看到你的意思是在工作簿之间进行复制。 FlexCel比COM或Interop更容易。

2

可以使用范围的SET_VALUE方法

在这里写对象的整个阵列是例如:

class Program 
    { 
     static void Main(string[] args) 
     { 
      string file = AppDomain.CurrentDomain.BaseDirectory + "SetArrayToExcel.xlsx"; 
      Excel.Application excelApp = new Excel.Application(); 
      excelApp.Visible = true; 
      Excel.Workbook wb = excelApp.Workbooks.Open(file, Type.Missing, Type.Missing 
       , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing 
       , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing 
       , Type.Missing, Type.Missing); 
      object[,] testTable = new object[2, 2]{{"6-Feb-10", 0.1}, {"26-Mar-10", 1.2}}; 
      Excel.Worksheet ws = wb.ActiveSheet as Excel.Worksheet; 
      Excel.Range rng = ws.get_Range("rngSetValue", Type.Missing); 


      //rng.Value2 = testTable; 
      rng.set_Value(Type.Missing, testTable); 
     } 
    } 
+0

谢谢Vajda,我已经实现通过you.ExcelRange2 = ExcelWorkSheet2.get_Range( “A” + newFileRow,columnMaxName + newFileRow)提供的逻辑; ExcelRange2.Value2 = arrForValues; – 2012-03-25 16:53:04

+0

我很乐意提供帮助。 :) – Vajda 2012-03-25 19:23:15