如何使用C#插入数据到Excel表格?

我想创build新的Excel表格,并从string数组中插入数据。 我用下面的代码来创build,现在我想插入数据。

Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); //xlApp = new Excel._Application.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com"; xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Exception Occured while releasing object " + ex.ToString()); } finally { GC.Collect(); } } 

 private void ExportToExcel(string fileName, DataGridView dgv) //Exports the given dataGridView to Excel with the given fileName { Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); int i = 0; int j = 0; DataTable dtExcelTable = GetDataTableForExcel(dgv); for (i = 0; i < dtExcelTable.Columns.Count; i++) { xlWorkSheet.Cells[1, i + 1] = dtExcelTable.Columns[i].ColumnName; } for (i = 0; i < dtExcelTable.Rows.Count; i++) { for (j = 0; j < dtExcelTable.Columns.Count; j++) { xlWorkSheet.Cells[i + 2, j + 1] = dtExcelTable.Rows[i][j]; } } try { xlWorkBook.SaveAs(fileName + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); MessageBox.Show("Excel dosyanız C:\\" + fileName + ".xls uzantısında yaratıldı."); } catch (Exception ex) { MessageBox.Show("Bir sorun oluştu, tekrar deneyiniz. Hata: " + ex.Message); } } 

调用COM方法非常慢。 如果您打算插入大量数据,我build议您获取所需的全部范围,设置所有值并将其添加回去:

 var range = xlWorkSheet.get_Range[firstCell, lastCell]; // or string range var data = (object[,])range.get_Value(XlRangeValueDataType.xlRangeValueDefault); // Set data here. Remember it's 1 based index, and row (y component) first range.set_Value(data);