我使用此http://phpexcel.codeplex.com/导出到Excel。
需要导出11000 - 65000行... 但是当试图这样做时,浏览器会挂断。 它不会回答错误或其他消息。只显示正在进行的请求。
顶部显示apache已完成工作。 甚至apache日志说完了所有:
x.x.x.x - - [28/Jul/2011:12:28:38 +0300] "POST /doctor/lab/statistic/ HTTP/1.1" 200 2773504 "http://x.x.x.x:82/doctor/lab/statistic/" "Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0"
但仍然没有结果。
系统:
Linux Eearth 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 i686
PHP Version 5.3.5
Apache/2.2.15 (Linux/SUSE)
所以问题
编辑1
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
header('Cache-Control: max-age=0');
$writer = PHPExcel_IOFactory::createWriter($xls, 'Excel5');
$writer->save('php://output');
exit;
编辑2
我试图将数据保存到文件,如$writer->save('test.xls');
filesize 2.7MB
如果我这样做:
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
header('Cache-Control: max-age=0');
include 'test.xls';
exit;
立即下载...
答案 0 :(得分:1)
你的网络服务器可能没有发出错误消息,所以我要说检查你的error.log(应该在/ var / log / apache2或类似的地方闲逛。)这可能是一件微不足道的事情能够写入临时文件。
如果结果是死胡同,请考虑使用echo语句以编程方式创建CSV文件 - Excel将打开这些文件就好了。
修改强>
要生成CSV,请执行标题
header('Content-Type: text/comma-separated-values);
header('Content-Disposition:attachment;filename="'.$filename.'.csv"');
header('Cache-Control: max-age=0');
然后输出您的列标题:
echo "col1,col2,col3,col4,..."
后面是一个新行。然后输出你的数据:
while(/*Still got some rows*/) {
echo $row[0] . "," .$row[1] "," + ...
}
看看:http://en.wikipedia.org/wiki/Comma-separated_values,这是一个非常简单的文件格式,Excel会毫不费力地打开它。
另一件我没想过的事情是,如果你有权访问Windows Server,你可以通过COM互操作直接生成Excel文件。