2009-06-30 142 views
2

我已經加載了一些我想要導出到多個Excel工作表(在新的電子表格/ Excel文件中)的DataTables。我在代碼中已經存在的「解決方案」是兩個嵌套的for循環,遍歷所有行和列,逐個單元格地插入數據。這並不理想,因爲該過程需要超過10分鐘。由於生成的電子表格數據量爲8.5MB,因此數據量相當大,但肯定會有更快的方式?將數據表導出到多個Excel工作表中

我正在使用Office Interop庫來執行此操作;我想我記得在某個地方你可以用這些導入CSV。如果是這種情況,將DataTables轉換爲CSV然後將其導入到Excel中會更快嗎?如果是這樣,如何?

+0

雖然:Excel不是數據庫。如果它像一個一樣使用,它最終會崩潰。 – 2009-06-30 16:55:28

+0

是的,沒關係。它只是一個工具,用於從數據庫中讀取數據,對數據進行一些計算,將結果顯示在由DataTables支持的幾個DataGrid中(出於某種原因),然後將這些結果導出到電子表格中。 – 2009-06-30 17:22:51

回答

2

最好的辦法可能是通過在Range對象上使用Value屬性設置器來加快速度。它接受一個數組,它比單獨設置每個單元的速度要快得多。你可以在http://support.microsoft.com/kb/302096看到這個樣本。

+0

阿哈,看起來不錯。我會給這個去看看會發生什麼... – 2009-06-30 17:21:18

0

有一個類似於Excel的API,但會將您的時間從10分鐘以上減少到幾秒鐘(實際上,生成8.5MB工作簿通常需要在現代服務器上以1秒鐘的時間訪問<)。 SpreadsheetGear還包含一個IRange.CopyFromDataTable方法,可能適用於您。

您可以看到實時ASP.NET樣本(C#& VB)here並下載評估here

聲明:我自己的SpreadsheetGear LLC

相關問題