【问题标题】:PHPExcel create a new filePHPExcel 创建一个新文件
【发布时间】: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 请求

标签: php ajax phpexcel


【解决方案1】:

我找到了解决问题的方法……但只解决了一半。因为它可以使用此代码:

 $objPHPExcel = new PHPExcel();
   $objPHPExcel->getProperties()
   ->setCreator("Temporaris")
   ->setLastModifiedBy("Temporaris")
   ->setTitle("Template Relevé des heures intérimaires")
   ->setSubject("Template excel")
   ->setDescription("Template excel permettant la création d'un ou plusieurs relevés d'heures")
   ->setKeywords("Template excel");
   $objPHPExcel->setActiveSheetIndex(0);
   $objPHPExcel->getActiveSheet()->SetCellValue('A1', "12");

   $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  
   header('Content-Type: application/vnd.ms-excel');
   header('Content-Disposition: attachment;filename="excel.xls"');
   header('Cache-Control: max-age=0');
   $writer->save('php://output');

但它是 Excel5 而不是 Excel2007,当我用 Excel2007 替换 Excel5 时,我有相同的错误消息。

【讨论】:

  • 评论不用于扩展讨论;这个对话是moved to chat
  • 好吧,我检查了 xlsx 文件:zip 索引是完整的,但是单个文件在 crc 检查中失败,所以好像 ZipArchive 以某种方式损坏了单个文件(或者至少它们的 crc32 value) 写的时候....这不是我能解释的事
【解决方案2】:

你试过了吗?

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多