我有一个大小为m x n的DataTable,想要将所有内容(包括列标题)复制到一个已经打开的excel文件中。我有对Excel.Workbook的引用,并且知道数据将被复制到哪个工作表中。
我知道最简单(也是最不规范的)的方法是:
Excel.WorkSheet outSheet; //set to desired worksheet
int rowIdx = 1;
int colIdx = 1;
//add header row
foreach (DataColumn dc in dt.Columns)
{
outSheet.Cells[rowIdx, colIdx++] = dc.ColumnName;
}
colIdx = 1; //reset to Cell 1
//add rest of rows
foreach (DataRow dr in dt.Rows)
{
colIdx = 0;
foreach (DataColumn dc in dt.Columns)
{
outSheet.Cells[rowIdx + 1, colIdx + 1] = dr[colIdx].ToString();
colIdx++;
}
rowIdx++;
}
这种方法可以实现,但是需要逐个单元格地访问和粘贴数据,时间成本非常高。有没有更好的方法来完成这个任务呢?
Application.ScreenUpdating = false
和Application.Calculation = xlCalculationManual
。此外,似乎您并没有复制/粘贴,而是仅设置值,这比复制/粘贴要快得多。 - StoriKnow