【发布时间】:2015-04-16 15:41:46
【问题描述】:
我正在尝试使用带有此代码的 PHPExcel 库来创建一个新的 Excel 文件:
include ('/lib/PHPExcel/PHPExcel/IOFactory.php');
include ('/lib/PHPExcel/PHPExcel.php');
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()
->setCreator("admin")
->setLastModifiedBy("admin")
->setTitle("Test")
->setSubject("template file")
->setDescription("template file")
->setKeywords("Prout");
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(dirname(__FILE__).'/file/test.xlsx');
文件已创建,但当我尝试打开它时,我的 excel 2010 告诉我文件内有不可读的内容,我无法打开它。
我在不同的论坛上尝试了不同的方法,但我总是得到相同的结果。我通过将 Ajax 与 jquery 一起使用来进行此操作。这可能是导致此错误的原因吗?
【问题讨论】:
-
也可以尝试设置标题,它应该可以解决您的问题。
-
您将这个文件保存在 Web 服务器上,那么 Ajax 会出现在哪里?
-
我向您展示的代码是在 jquery 的帮助下由 ajax 调用的,我已经尝试放置一些标题来强制下载,不是吗?它不适用于ajax。解决此问题后,我将找到如何解决此问题。 Peraphs 我不能通过 Ajax,但我不希望用户在尝试下载文件时离开页面
-
第一点.....您将文件保存在网络服务器上,而不是将其发送到浏览器(PHPExcel 发行版的示例显示了如何通过发送适当的 标头来做到这一点 并保存到
php://output) -
第二点.... Ajax 不知道如何处理作为 Excel 文件的二进制数据流,因此您需要在您的 js 代码中处理它...或者(更合适) 使用文件创建脚本的链接而不是使用 Ajax 请求