将项目添加到多行Excel c#

我有一个Windows窗体应用程序。 在这个应用程序中,我想将我的一些数据导出到excel中。 我已经想出了如何创build一个Excel文件,并保存了一些值。 然而,我不确定的一件事是,如果有一种方法可以使用for循环将项添加到excel行(根据您有多less数据找出行和列)? 因为如果你想添加一个项目列表,比如1000个项目一个接一个,效率相当低。

例如:要一次添加一个项目到特定的单元格,我们可以这样做:

xlSomeDetail.Cells[1,1] = "Teacher Id"; xlSomeDetail.Cells[1,2] = "first name"; xlSomeDetail.Cells[1,3] = "Last Name"; xlSomeDetail.Cells[1,4] = "Email"; xlSomeDetail.Cells[1,5] = "Salary"; 

现在有没有像这样的东西,如果我想不做一个一个地添加行呢?

 //declare aRange variable Excel.Range aRange; aRange = (Excel.Range)xlSomeDetail.get_Range("A1", "M1"); //something like this? I am not sure for (int i = 1; i< aRange.Rows; i++{ xlSomeDetail.Cell[1, i+ 1] = //somestring? } 

有没有更好的方法来做到这一点?

尝试创build多个Xl对象,这将按照您的需求将您的数据拆分为多个数据表

  [DllImport("user32")] private static extern bool GetWindowThreadProcessId(int hWnd, out int id); for(i=0;i<2;i++) { oXL = new Microsoft.Office.Interop.Excel.Application(); oXL.SheetsInNewWorkbook = 1; oXL.Visible = false; //Get a new workbook. oWB = (Excel.Workbook)(oXL.Workbooks.Add(Type.Missing)); oSheet = (Excel.Worksheet)oWB.Worksheets.get_Item(1);+ oSheet.Name = "Summary Report";//Change the name as per your requirment ExcelRowsCount = 2; for (int RowsCount = 0; RowsCount < dt.Rows.Count; RowsCount++) { for (int ColumnsCount = 0; ColumnsCount < dt.Columns.Count; ColumnsCount++) { if (RowsCount.Equals(0) && ColumnsCount.Equals(0)) oSheet.Cells[2, 1] = dt.Rows[RowsCount][ColumnsCount].ToString(); else oSheet.Cells[ExcelRowsCount + RowsCount, ColumnsCount + 1] = dt.Rows[RowsCount][ColumnsCount].ToString(); } oXL.Visible = false; oXL.UserControl = false; oXL.DisplayAlerts = false; oXL.ActiveWorkbook.SaveAs(FileName, Excel.XlFileFormat.xlWorkbookNormal, "", "", false, false, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); oWB.Close(false, Type.Missing, Type.Missing); oXL.Workbooks.Close(); oXL.Quit(); int ExcelID; GetWindowThreadProcessId(oXL.Hwnd, out ExcelID); Process XLProcess = Process.GetProcessById(ExcelID); Marshal.ReleaseComObject(oSheet); Marshal.ReleaseComObject(oWB); Marshal.ReleaseComObject(oXL); XLProcess.Kill(); GC.Collect(); GC.WaitForPendingFinalizers(); } }