2

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

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

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

4

5 回答 5

2

您应该考虑使用 java 和Apache POI

它具有良好的性能,甚至比 Windows 上的 MS Office 互操作程序集更好(基于我自己的经验)。

它还拥有庞大的用户社区。

于 2012-05-29T16:28:17.307 回答
1

根据页面的复杂性,您可以尝试手动构建 xlsx 文件。xlsx 规范非常复杂,但我已经看到了创建非常简单的表的示例。

也许这个链接可能会有所帮助。

于 2012-05-29T00:36:23.913 回答
1

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

于 2012-05-29T02:30:15.630 回答
1

您可以尝试从 ResultSet 在 Java 上的Templater中构建它。我们正在使用更多 Java 示例更新站点,但代码看起来会与此类似。

ITemplaterDocument doc = Configuration.Factory.Open(file); doc.process(结果集);doc.flush();

于 2012-05-29T16:15:18.847 回答
0

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

于 2012-06-04T08:12:49.503 回答