2012-03-09 89 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