【问题标题】:PHPexcel can't save filePHPexcel无法保存文件
【发布时间】:2015-03-06 13:35:18
【问题描述】:

我有一个文件,我想在其中使用标准示例。 像 here 一样,但我添加了 php://output 而不是 str_replace('.php', '.xlsx', __FILE__) 因为我希望用户下载文件。 所以,我有一个表格:

$res.="<form method='POST' action='".$this->self()."'>";
$res.="<input type='text' class='span5' placeholder='Address' name='excelAddress'></input>";
$res.="<button type='submit' id='export' class='span2 pull-right'>Экспорт</button>";
$res.="</form>";

如果post['excelAddress'] isset 我尝试标准示例:

$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("Administrator");
$objPHPExcel->getProperties()->setLastModifiedBy("Administrator");
$objPHPExcel->getProperties()->setTitle("Показания клиентов по адресу:".$_POST['excelAddress']);
$objPHPExcel->getProperties()->setSubject("Показания клиентов по адресу:".$_POST['excelAddress']);
$objPHPExcel->getProperties()->setDescription("Показания клиентов по адресу:".$_POST['excelAddress']);

$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');

$objPHPExcel->getActiveSheet()->setTitle('Simple');

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('php://output');

在我的页面顶部我还包括:

/** PHPExcel */
include './lib/PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include './lib/PHPExcel/Writer/Excel2007.php';

我也有:

ini_set("display_errors", "On");
error_reporting(E_ALL ^ E_NOTICE);

我需要吗:

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

或者只是不写 ./lib./... 我有所有的库? 当我尝试我的示例时,我只有:

KL�,EG�D�X�[Content_Types].xml��MN�0���"�%nY ��vAa  �(0����ؖg�w{&i�@�nbE�{��y��d۸l m������X�(���)���F���;@1_������c)j�x/%��E��y� �QĿi!��K�y3�J<���Z1�0?Y�L%zV c��Ib7�����a/l٥P1:�q�r��j��j0A����u�""���(�   ���W�M��)Tj�({ܲ�>�O��,X٭���>B��~׭���Ӥ6�J=�oBZ����t��X4���Cg�,���QgmrL�ٯc�e���t��    Z�?����hPv��±��u�j���R�������}�Cv��PKL�,E�78�K_rels/.rels���j�0��{ �{���1F�^ʠ�2��l��$���-}�y����Î��O��v�y�;�؋Ӱ.JP���޵^������Yű�3G�Ww�g)����>�qQC��D����b!�]�i$L��3����2n���oT�:Z �h�����[��4�ი��]��yN�,ە�>�>�j -' V�)�#��EF^6��n���8q"K��H��>_ׄ����eƏ�<⇄�Ud�v�� T�PKL�,E�$�V��xl/_rels/workbook.xml.rels���j�0D�� ��ZvZJ)�s)�\[����LlIh7m��UH��Ĭؙ�H���8�OL���*J�M���|4��g��[=� 

我的错误是什么?

【问题讨论】:

  • 尝试设置 Content-Type 标题,然后它可能会显示为 Excel 文件。

标签: php phpexcel


【解决方案1】:

您需要发送 http 响应标头,以便浏览器知道如何处理发送给它的数据。看看/Examples/01simple-download-xlsx.php

【讨论】:

    【解决方案2】:

    我猜你忘了加header。

    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header("Content-Disposition: attachment;filename={$filename}");
    header('Cache-Control: max-age=0');
    $objWriter->save('php://output');
    

    另外的标题是:

    .xls:应用程序/vnd.ms-excel

    .xlsx:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

    【讨论】:

    • 它说格式或文件扩展名无效。我尝试 xlsx 的变体。
    • It 是吗?微软Excel?在这种情况下,请确保您的脚本在结束 ?&gt; 之后没有回显空白字符或任何内容(更好的是,删除任何结束 ?&gt;)
    • 我尝试了 ms excel 变体,它可以工作。但是文件也有奇怪的符号。会找到解决办法的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多