2012-05-29 154 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

謝謝,我會考慮這個選項! –