2011-01-21 59 views
-1

我正在回想一大堆400,000 ++左右的行,通過一個DataReader並使用第三方組件生成一個Excel文件。與此相關的問題是,在調用生成excel文件的方法之前,需要先將所有400,000條記錄加載到對象模型中(佔用大量內存)。將大量記錄轉換爲excel文件而不消耗大量內存

就如何克服這個任何sugestion?任何鏈接或圖書館來都歡迎

感謝

+0

CSV是一個選項嗎?您無需使用第三方組件即可輕鬆寫出CSV文件。或者,你可以用Excel的XML格式寫出數據 - 不像CSV那麼容易,但你可以自己設計一些東西。 – 2011-01-21 11:16:21

+0

不是csv不是opion,任何關於如何寫入excel格式的鏈接將有幫助謝謝 – CliffC 2011-01-21 11:38:16

回答

0

我這樣做了兩步, 首先生成csv文件。
下一步將CSV導入到excel中(這可以通過引用Office對象在.net中完成)。在宏觀上它是這樣的一些東西:

With ActiveSheet.QueryTables.Add(Connection:= TEXT;C:\mcsv.csv",Destination:=Range("$A$1")) 
     .Name = "mcsv" 
     .TextFileCommaDelimiter = True 
    End With 

它應該是整個過程秒的問題。

0

你總是可以按行讀取的DataReader行數據,並將其儲存(即臨時文件) - 這樣避免將它們加載在一起。但是,如果您使用第三方組件作爲excel文件,恐怕總會有一段時間所有數據都會保留在內存中 - 至少在關閉文檔之前。

如果性能是最高目標,我會考慮手動生成一個CSV文檔(這可以很容易地在流中完成,以避免將所有數據加載到內存中)。據我所知,有幾個免費的CSV處理實現。

0

我有同樣的問題。

我直接向CSV文件寫入數據。 它非常快速而不是使用第三方組件。