我正在回想一大堆400,000 ++左右的行,通过一个DataReader并使用第三方组件生成一个Excel文件。与此相关的问题是,在调用生成excel文件的方法之前,需要先将所有400,000条记录加载到对象模型中(占用大量内存)。将大量记录转换为excel文件而不消耗大量内存
就如何克服这个任何sugestion?任何链接或图书馆来都欢迎
感谢
我正在回想一大堆400,000 ++左右的行,通过一个DataReader并使用第三方组件生成一个Excel文件。与此相关的问题是,在调用生成excel文件的方法之前,需要先将所有400,000条记录加载到对象模型中(占用大量内存)。将大量记录转换为excel文件而不消耗大量内存
就如何克服这个任何sugestion?任何链接或图书馆来都欢迎
感谢
我这样做了两步, 首先生成csv文件。
下一步将CSV导入到excel中(这可以通过引用Office对象在.net中完成)。在宏观上它是这样的一些东西:
With ActiveSheet.QueryTables.Add(Connection:= TEXT;C:\mcsv.csv",Destination:=Range("$A$1"))
.Name = "mcsv"
.TextFileCommaDelimiter = True
End With
它应该是整个过程秒的问题。
你总是可以按行读取的DataReader行数据,并将其储存(即临时文件) - 这样避免将它们加载在一起。但是,如果您使用第三方组件作为excel文件,恐怕总会有一段时间所有数据都会保留在内存中 - 至少在关闭文档之前。
如果性能是最高目标,我会考虑手动生成一个CSV文档(这可以很容易地在流中完成,以避免将所有数据加载到内存中)。据我所知,有几个免费的CSV处理实现。
我有同样的问题。
我直接向CSV文件写入数据。 它非常快速而不是使用第三方组件。
CSV是一个选项吗?您无需使用第三方组件即可轻松写出CSV文件。或者,你可以用Excel的XML格式写出数据 - 不像CSV那么容易,但你可以自己设计一些东西。 – 2011-01-21 11:16:21
不是csv不是opion,任何关于如何写入excel格式的链接将有帮助谢谢 – CliffC 2011-01-21 11:38:16