2015-04-16 51 views
1

我试图用PHPExcel库,使用此代码创建一个新的Excel文件的新文件:PHPExcel创建

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中告诉我有是文件内的不可读内容,我无法打开它。

我在另一个论坛上尝试了不同的方式,但我总是得到相同的结果。我通过在jQuery中使用Ajax来完成这个操作。这可能是这个错误的原因吗?

+0

尝试设置标题以及它应该解决您的问题。 –

+0

您正在将此文件保存在Web服务器上,那么Ajax会在哪里出现? –

+0

我告诉你的代码是由jQuery的帮助调用ajax,我已经尝试把一些标题把它的强制dowload不?它不适用于ajax。解决这个问题后,我会找到解决这个问题的方法。 Peraphs我可以不通过Ajax,但我不希望用户离开页面时,他试图下载文件 – Kvasir

回答

2

我发现如何解决我的问题......但只有一半。因为它与此代码的工作:

$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中,当我remplace Excel5通过Excel2007中我有同样的错误消息。

+0

评论不适合长时间讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/75530/discussion-on-answer-by-kvasir-phpexcel-creat-a-new-file)。 – Taryn

+0

嗯,我已经检查了xlsx文件:zip索引是完整的,但是单个文件在crc检查时失败,所以就好像ZipArchive在编写时以某种方式损坏了单个文件(或至少它们的crc32值)...这不是我能解释的 –

0

你试过这个吗?

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);