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

pgr*_*ras 4 java excel

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

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

有任何想法吗 ?

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

Bal*_*usC 6

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

我建议使用CSV,因为它可能比XML更有效,而且你的优点是任何体面的数据库服务器都具有导出功能,因此你不需要在Java中编程/包含任何新东西.我不知道你正在使用哪个数据库,但如果它是例如MySQL,那么你可以使用LOAD DATA INFILE它.