在SAE上使用PHPExcel的注意事项

来源:互联网 发布:淘宝如何开店视频教程 编辑:程序博客网 时间:2024/04/29 14:25

PHPExcel下载

从Githube上下载PHPExcel的zip包,我用的1.8.1版本。zip包里有库文件和一些测试代码。

本地运行环境使用一切正常

之前为了方便编辑代码,在本地用虚拟机装了个CentOS系统,建了个站点,把PHPExcel上传后,运行测试代码,均正常。

SAE上的问题及分析

运行“01simple-download-xlsx.php”是有问题,下载的文件里只有一句XMLWriter缺失错误。

Fatal error: Class 'XMLWriter' not found in PHPExcel/Classes/PHPExcel/Shared/XMLWriter.php on line 44

这是因为SAE的标准空间没有XMLWriter这个类。
好在运行“01simple-download-xls.php”是正常的,说明依靠XMLWriter的2007版文件无法生成,但只依靠XML扩展的2003版没问题。
又找了些测试例子来运行,比如“05featuredemo.php”。先将Save Excel 2007 file部分的代码注释掉,运行时出错:

Warning: fopen(/data1/www/htdocs/587/thbim/2/PHPExcel/Examples/05featuredemo.xls) [function.fopen]: failed to open stream: Permission denied in PHPExcel/Classes/PHPExcel/Shared/OLE/PPS/Root.php on line 90Fatal error: Uncaught exception 'PHPExcel_Writer_Exception' with message 'Can't open /data1/www/htdocs/587/thbim/2/PHPExcel/Examples/05featuredemo.xls. It may be in use or protected.' in /data1/www/htdocs/587/thbim/2/PHPExcel/Classes/PHPExcel/Shared/OLE/PPS/Root.php:93 Stack trace: #0 /data1/www/htdocs/587/thbim/2/PHPExcel/Classes/PHPExcel/Writer/Excel5.php(226): PHPExcel_Shared_OLE_PPS_Root->save('/data1/www/htdo...') #1 /data1/www/htdocs/587/thbim/2/PHPExcel/Examples/05featuredemo.php(63): PHPExcel_Writer_Excel5->save('/data1/www/htdo...') #2 {main} thrown in PHPExcel/Classes/PHPExcel/Shared/OLE/PPS/Root.php on line 93

这是因为SAE的标准空间不允许写操作,于是我把保存路径设为Storage的路径:

$objWriter->save(str_replace('.php', '.xls', __FILE__));//修改为:$objWriter->save('saestor://upload/info.xls');

终于顺利运行,在Storage中的upload目录生成了info.xls,打开如下图:
这里写图片描述
里面包含了文本和图片,基本功能也够用了,我就没继续测试下去。

总结

保存文件时选择Excel5,即2003版excel文件
保存路径用Storage

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('saestor://upload/info.xls');
0 0