[英]how to insert data into excel sheet using C#?
我想從字符串數組創建新的Excel工作表並將數據插入其中。 我使用以下代碼創建,現在我想插入數據。
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方法非常慢。 如果打算插入大量數據,建議您獲取所需的整個范圍,設置所有值,然后再添加回去:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.