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

Java 将Excel数据直接写入OutputStream(限制内存消耗),java,excel,Java,Excel,我正在寻找一个简单的解决方案来输出大的excel文件。输入数据来自数据库,我希望将Excel文件直接输出到磁盘,以尽可能降低内存消耗。我查看了ApachePOI或jxls之类的东西,但没有找到解决问题的方法 作为补充信息,我需要为2007年以前的Excel生成.xls文件,而不是新的.xlsx xml格式。我也知道我可以生成CSV文件,但我更喜欢生成纯Excel 有什么想法吗 我意识到我的问题不是很清楚,我真的希望能够编写excel文件,而不必将整个文件保存在内存中…不知道如何生成真正的XSL文

我正在寻找一个简单的解决方案来输出大的excel文件。输入数据来自数据库,我希望将Excel文件直接输出到磁盘,以尽可能降低内存消耗。我查看了ApachePOI或jxls之类的东西,但没有找到解决问题的方法

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

有什么想法吗


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

不知道如何生成真正的XSL文件。但是,您可以直接编写一个HTML文件,或者一个包含电子表格的zip流(我想MSExcel可以读取这种更高的格式)

通常被推荐为Apache POI的一种内存效率更高的替代方法。

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


我建议使用CSV来实现这一点,因为它可能比XML更有效,而且您还有一个优势,即任何一台像样的数据库服务器都具有这方面的导出功能,因此您不需要使用Java中的任何新功能。我不知道您使用的是哪个数据库,但如果是MySQL,那么您可以使用它。

我看到了这个问题,即使标题非常相似,我只对编写excel文件感兴趣,不需要阅读它们。我特别想找一种方法,不把整个excel文件保存在内存中……HTML是一个非常糟糕的主意。不要那样做。Excel会在编辑/保存时弄乱它,最新版本会抱怨不支持的文件格式。只使用XLS/XLSX/CSV。谢谢你的回答,我想我会选择CSV,直到我的公司迁移到新的Office版本,然后继续使用XLSX。你知道一个库可以逐行生成xlsx吗?