调用HSSF Serializer Invocation

时间:2012-07-10 16:54:17

标签: java xls apache-cocoon

我必须编写一个非常大的XLS文件,我已经尝试过Apache POI,但它只占用了太多的内存供我使用。

我快速浏览了StackOverflow,我注意到了一些对Cocoon项目的引用,特别是HSSFSerializer。这似乎是一种将XLS文件写入磁盘的更高效的内存方式(从我读过的内容来看,如果我错了,请纠正我!)。

我对此处描述的用例感兴趣:http://cocoon.apache.org/2.1/userdocs/xls-serializer.html。我已编写代码以Gnumeric格式写出文件,但我似乎无法找到如何调用HSSFSerializer将其转换为XLS。

在进一步阅读时,似乎Cocoon项目是各种各样的Web框架。我可能正在咆哮错误的树,但是:

您是否可以提供一个读取文件,在其上运行HSSFSerializer并将该输出写入另一个文件的示例?目前尚不清楚如何从文档中做到这一点。

2 个答案:

答案 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或其他东西:

  • Cocoon可以肯定主持XSL处理;如果你需要Cocoon,可以使用批处理(Cocoon CLI)处理,但要求它不要作为webapp运行(尽管据我记得,在2.1系列的最新版本中,CLI功能被破坏了);和Cocoon提供了大量可满足进一步要求的功能和技术。
  • 如果Cocoon刚刚开始运行XSL转换,可能会有点过分,因为有一些众所周知的,更轻松的工具可以选择。