2012-05-29 112 views
2

我需要每天在我的网站上自动更新Excel中的一些价目表。我为此使用了PHPExcel,但它需要大量内存(大约900 Mb)才能生成1个文件,仅有40000行和11列,这在我的Linux托管服务器上不可用。所有的Google结果都只指向PHPExcel。我想知道是否有任何命令行实用程序可以做同样的事情,但消耗更少的内存,所以我可以使用cron在我的Linux服务器上运行它?我需要在Excel文件中使用一些格式和公式,这会使CSV和HTML变为非选项。如何在Linux中从命令行生成xls文件?

当然,我可能会从Windows Server计算机连接到MySQL,在实际的Excel中生成Excel文件,然后将它们上传到服务器,但是这个选项对我来说似乎很难。

补充: 我现在PERL,Python和Java模块之间进行选择,选择消耗上的大文件更少的资源和更容易使用的一个;欢迎对此主题发表任何评论。 也接受任何其他解决方案。

回答

0

对我来说最简单的选择是使用python-excel库。虽然我从来没有在python上写过任何东西,但是我花了我几个小时的时间才真正实现了它的工作,并且它的运行速度比PHPExcel快得多,而且消耗的内存也更少(我的最大文件大约为300 MB,而对于900 MB PHP)。但是,如果您正在寻找类似问题的解决方案,其他答案中提供的工具也可以满足您的需求。

1

根据您网页的复杂程度,您可以尝试手动构建xlsx文件。 xlsx规范非常复杂,但我见过创建非常简单的表的示例。

也许这link可能会有所帮助。

1

我使用PERL和John McNamara的模块Spreadsheet :: WriteExcel生成了各种精美的电子表格,结果非常好。但它需要编程。

+0

你的拼图很大吗?它是否需要很多时间和内存才能生成? –

+1

是的,其中一些电子表格有数十个标签,数万行,并且大小为几兆字节。内存使用量是最终电子表格文件大小的数量级,生成时间由用于检索数据的SQL查询占主导地位。相当简单的交易,可以从安装了PERL系统的Linux或Windows的命令行运行。 –

1

您可以尝试在ResultSet中使用Java编写Templater。我们正在使用更多的Java示例更新站点,但代码会沿着这个方向看起来有些东西。

ITemplaterDocument doc = Configuration.Factory.Open(file); doc.process(resultSet); doc.flush();

+0

这似乎很容易使用,我应该检查一下性能。谢谢! –

2

您应该考虑使用Java和Apache POI

它具有良好的性能,甚至更好,然后MS Office的互操作组件上的窗户(根据我自己的经验)。

另外它有一个庞大的用户群体。

+0

谢谢,我会考虑这个选项! –