将数据插入到单个excel工作簿上的多个工作表中

本文关键字:工作 工作簿 插入 数据 单个 excel | 更新日期: 2023-09-27 18:20:36

我正在研究一种方法,该方法使用以下代码将两个不同C#列表中的数据导出到一个工作簿中的两个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();

但是,当我运行上面的方法时,第一个列表被成功处理,但当在下面的行分配第二张表时,它给我带来了错误Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

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

这不是处理多个Excel工作表的方法吗

将数据插入到单个excel工作簿上的多个工作表中

第二个工作表可能不叫Sheet2。最好只使用索引。

此外,您需要调用Activate使工作表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();