2014-09-03 76 views
0

我使用下面的代碼將數據插入到一個單一的Excel工作簿

Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); 
       Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); 



       Microsoft.Office.Interop.Excel._Worksheet worksheet1 = null; 
       worksheet1 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets["Sheet1"]; 
       worksheet1 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.ActiveSheet; 

       for (int i = 1; i < listExport.Count + 1; i++) 
       { 

         worksheet1.Cells[i+1,1] = listExport[i - 1].time.ToString("HH:mm:ss"); 
         worksheet1.Cells[i+1, 2] = listExport[i - 1].CC; 
         worksheet1.Cells[i+1, 3] = listExport[i - 1].term;       

       } 

       Microsoft.Office.Interop.Excel._Worksheet worksheet2 = null; 
       worksheet2 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets["Sheet2"]; 
       worksheet2 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.ActiveSheet; 

       for (int i = 1; i < AxiomSubSet.Count + 1; i++) 
       { 

        worksheet2.Cells[i + 1, 1] = AxiomSubset[i - 1].time.ToString("HH:mm:ss"); 
        worksheet2.Cells[i + 1, 2] = AxiomSubset[i - 1].CC; 

       } 

       string fileDestination = @"S:\Axiom Derivatives\Parser Project\axiom.xls"; 
       if (File.Exists(fileDestination)) 
       { 
        File.Delete(fileDestination); 
       } 

       workbook.SaveAs(fileDestination, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
       workbook.Close(true, Type.Missing, Type.Missing); 
       Process.Start(fileDestination); 
       app.Quit(); 

上從兩個不同的C#列表導出數據到兩個Excel工作表在一個工作簿的方法工作,但是當我運行多個工作表上述方法成功地處理所述第一列表中,但在下面的行,分配所述第二片材時,它把我錯誤Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

worksheet2 ==Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets["Sheet2"];

這不是處理多張Excel表格的方式?

+0

任何你在Office 13工作的機會?我認爲默認情況下只有一個電子表格,所以你需要一個機制來檢查'worksheet2 =(Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheet [「Sheet2」]; – 2014-09-04 07:40:37

回答

1

第二個工作表可能不稱爲Sheet2。 最好只是使用索引來代替。

此外,您還需要調用激活,使表2中的工作表:

第一片

worksheet1 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets[1]; 
       workbook.Sheets[1].Activate(); 

前第二片之前

worksheet2 = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets[2]; 
       workbook.Sheets[2].Activate(); 
相關問題