2014-09-12 113 views
0

我有一个文件,我想使用标准的例子。 与here一样,但我添加了php://output而不是str_replace('.php', '.xlsx', __FILE__),因为我希望文件可以由用户下载。 所以,我有一个表格:PHPexcel无法保存文件

$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��[=� 

什么是我的错?

+0

尝试设置Content-Type标题,然后它可能会显示为Excel文件。 – AeroX 2014-09-12 12:42:10

回答

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:应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

+0

它表示格式或文件扩展名无效。我尝试变种xlsx。 – 2014-09-12 12:50:14

+1

'它是? MS Excel?在这种情况下,确保你的脚本在关闭'?>'后没有任何回显的空白字符或任何东西(甚至更好,删除任何关闭的''>')。 – 2014-09-12 12:51:37

+0

我使用ms excel变体,它工作。但也有文件的奇怪符号。会找到一个解决方案。 – 2014-09-12 12:53:03

3

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