2012-03-25 184 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