将Excel数据直接写入OutputStream(限制内存消耗)

时间:2010-01-15 11:53:38

标签: java excel

我正在寻找一个简单的解决方案来输出大的excel文件。输入数据来自数据库,我想将Excel文件直接输出到磁盘,以尽可能降低内存消耗。我看过像Apache POI或jxls这样的东西,却发现无法解决我的问题。

作为附加信息,我需要为2007年之前的Excel生成.xls文件,而不是新的.xlsx xml格式。我也知道我可以生成CSV文件,但我更喜欢生成普通的Excel ...

有什么想法吗?

我意识到我的问题不是那么清楚,我真的希望能够编写excel文件,而不必将整个内容保存在内存中......

3 个答案:

答案 0 :(得分:6)

有效执行此操作的唯一方法是使用基于字符的CSV或XML(XLSX)格式,因为它们可以逐行写入输出,你可以每次只能在内存中一次只有一行。基于二进制的XLS格式必须首先在内存中填充完全才能将其写入输出,这当然是在大量记录的情况下占用内存。

我建议使用CSV,因为它可能比XML更有效,而且你的优点是任何体面的数据库服务器都具有导出功能,因此你不需要program / include Java中的任何新东西。我不知道您使用的是哪个数据库,但如果它是MySQL,那么您可以使用LOAD DATA INFILE来实现此目的。

答案 1 :(得分:2)

不知道生成真正的XSL文件。但您可以直接编写 HTML 文件或包含OPenDocument电子表格的压缩流(我猜MSExcel可以阅读此格式)

答案 2 :(得分:2)

JExcelAPI通常被建议作为Apache POI的内存效率更高的替代方案。