1. 程式人生 > >往Excel中快速寫入數據的又一種方法

往Excel中快速寫入數據的又一種方法

fps fas framework 導出到excel object targe star 列名 num

往Excel寫入數據的方法比較多,但實際應用場景及對性能的要求決定了需要對方法有所取舍。一些具體情形和方法可以參見https://blog.csdn.net/u013109267/article/details/52651647?locationNum=2&fps=1

但受到.Net framework及Excel版本的影響,一些比較舊的方法不再有效。比如上面網頁中快速寫入的關鍵方法get_Range和set_Value在新的VSTO環境中就受到影響。但原帖中的思路跟方法是可以借鑒的:

//將Table數據轉換成Array
private object[,] Table2Array(System.Data.DataTable myTable)
{
    
int rowCount = myTable.Rows.Count; int colCount = myTable.Columns.Count; object[,] myArray = new object[rowCount, colCount]; for (int i = 0; i < rowCount; i++) { var row = myTable.Rows[i]; for(int j = 0; j < colCount; j++) { myArray[i][j] = row[j]; }
return myArray; } //數據快速寫入到Excel private void FastLoad(string sheetName, System.Data.DataTable myTable, int startX, int startY) { int rowCount = myTable.Rows.Count; int colCount = myTable.Columns.Count; object[,] myArray = Table2Array(myTable); //輸出列名 for(int i = 0; i < colCount; i++) { Worksheets[sheetName].Cells[startX, startY
+ i] = myTable.Columns[i].ColumnName; } //數據輸出到Excel Range range = Worksheets[sheetName].Range(Worksheets[sheetName].Cells[startX + 1, startY], Worksheets[sheetName].Cells[startX + rowCount, startY + colCount - 1]); range.Value2 = myArray; }

往Excel中快速寫入數據的又一種方法