2012-03-09 59 views
0

我正在PHP中開發小型API,我需要創建一個ZIP存檔,但內容(文件)也是用PHPExcel庫隨時創建的,任何人都知道如何執行它?從PHPExcel Objects創建ZIP存檔

+0

最簡單的方法是創建一個臨時目錄,創建您的Excel文件,並在它甩掉他們,創建的目錄的內容的zip壓縮包,服務zip壓縮包然後刪除臨時數據。這在程序上是最簡單的方式,但在磁盤I/O方面效率不高 - 因此您可以在內存中完成所有操作,但在內存使用方面效率不高。無論採用哪種方法,您只需將流程分成「創建Excel文件」 - >「壓縮文件」 - >「發送數據」 - >「刪除在1和2期間創建的任何臨時數據」 – DaveRandom 2012-03-09 11:07:25

+0

我只能在飛行中執行此操作,在這種情況下我無法使用I/O操作 – Robert 2012-03-09 11:10:27

+0

您的意思是您必須在內存中執行此操作,並且無法將任何內容(即使是暫時的)寫入磁盤?這將是非常昂貴的內存... – DaveRandom 2012-03-09 11:12:25

回答

0

好像你可以這樣做:

<?php 
$zip = new ZipArchive; 
$res = $zip->open('test.zip', ZipArchive::CREATE); 
if ($res === TRUE) { 
    $zip->addFromString('test.txt', 'file content goes here'); 
    $zip->close(); 
    echo 'ok'; 
} else { 
    echo 'failed'; 
} 
?> 

所以,你必須得到PHPExcel字符串中的使用方法addFromString內容。

欲瞭解更多信息,看看這裏:http://php.net/manual/en/ziparchive.addfromstring.php

+0

所以,你的男人,在ma case我應該使用類似的東西:\t \t \t <?php \t \t \t $ zip = new ZipArchive; \t \t \t $ res = $ zip-> open('test.zip',ZipArchive :: CREATE); \t \t \t如果($ RES === TRUE){ \t \t \t \t $ zip-> addFromString( 'TEST.XLS',$ objectWriter->保存( 「excel_file.xls」)); \t \t \t \t $ zip-> close(); \t \t \t \t echo'ok'; \t \t \t}否則{ \t \t \t \t回波 '失敗'; \t \t \t} \t \t \t?> – Robert 2012-03-09 11:09:39

+0

你需要得到一個字符串VOM PHPExcel對象和路徑這個字符串'addFromString'方法。我不知道這種方法是否存在。檢查PHPExcel的手冊。否則,你必須按照DaveRandom(創建Tmp XLS文件...)描述的方式。 – tonymarschall 2012-03-09 11:39:58