2011-01-21 36 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文件写入数据。 它非常快速而不是使用第三方组件。