我必须编写一个非常大的XLS文件,我已经尝试过Apache POI,但它只占用了太多的内存供我使用。
我快速浏览了StackOverflow,我注意到了一些对Cocoon项目的引用,特别是HSSFSerializer。这似乎是一种将XLS文件写入磁盘的更高效的内存方式(从我读过的内容来看,如果我错了,请纠正我!)。
我对此处描述的用例感兴趣:http://cocoon.apache.org/2.1/userdocs/xls-serializer.html。我已编写代码以Gnumeric
格式写出文件,但我似乎无法找到如何调用HSSFSerializer
将其转换为XLS。
在进一步阅读时,似乎Cocoon项目是各种各样的Web框架。我可能正在咆哮错误的树,但是:
您是否可以提供一个读取文件,在其上运行HSSFSerializer
并将该输出写入另一个文件的示例?目前尚不清楚如何从文档中做到这一点。
答案 0 :(得分:0)
我的朋友,HSSF序列化程序是POI的一部分。您只是在xml中设置要序列化的某些属性(但是您需要一个完整的过程来创建它)。此外,使用此框架设置整个管道只是为了创建XLS似乎很奇怪,因为它改变了应用程序的体系结构。 ¿那是你的决定吗?
来自文档:
生成电子表格的另一种方法是通过Cocoon 序列化器(但你仍将间接使用HSSF)。随着Cocoon 您可以序列化任何XML数据源(可能是ESQL页面) 只需应用样式表和,就可以在SQL中输出 指定序列化器。
如果内存有问题,请在POI中尝试XSSF或SXSSF。
答案 1 :(得分:0)
我不知道“XLS”是指一个特定的,在Office 2007之前的版本,这个“可怕的SpreadSheet格式”(这是HSSF代表的),或者只是你可以用最新版本打开的任何东西MS Office,OpenOffice,...
因此,根据您的客户要求(即将打开您的Excel文件的那些要求),可能还有另一个选项:生成 .XLSX 文件。
归结为以正确的语法生成 XML文件,这似乎适合您的情况,因为您似乎已经使用基于Gnumeric XML的文件格式完成了此操作而没有技术麻烦,而且没有遇到记忆效率问题。
请注意,Excel和其他客户端可以使用其他基于XML的电子表格格式。您可能想深入了解打开的文档文件格式。
至于使用Apache Cocoon或其他东西: