【发布时间】:2014-10-06 06:47:16
【问题描述】:
[注意。主要编辑:同样的问题,但有更多信息]
我正在尝试创建一个 PHP 脚本,
- 生成 .xlsx 文件
- 邀请用户下载。
第 1 部分没问题(服务器上生成的文件是正确的)。第 2 部分不是。
我有两个文件来完成这项工作。第一个是XLSXExport.php,代码如下:
<?php
function exportDataToXLSX()
{
require_once(dirname(__FILE__)."/_inc/lib/PHPExcel/Classes/PHPExcel.php");
require_once(dirname(__FILE__)."/_inc/lib/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php");
$outputFileName = 'query.xlsx'; //TODO hash pour le nom
$outputFilePath = dirname(__FILE__).'/_store/'.$outputFileName;
$outputFileType = 'Excel2007';
//Creates a PHPExcel object
$objPHPExcel = new PHPExcel();
//– Les Données
$objPHPExcel->setActiveSheetIndex(0);
$activeSheet = $objPHPExcel->getActiveSheet();
$activeSheet->setCellValueByColumnAndRow(1, 1, "Test");
//– On sauvegarde notre fichier (Format Excel 2007)
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save($outputFilePath);
header("Content-Disposition: attachment; filename=\"" . basename($outputFilePath) . "\"");
header("Content-Type: application/force-download");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8');
header("Content-Length: " . filesize($outputFilePath));
header("Connection: close");
@readfile($outputFilePath);
exit();
}
exportDataToXLSX();
?>
第二个文件只包含第一个文件:
<?php
require_once('XLSXExport.php');
?>
当我启动第一个文件时,一切顺利:我被要求保存/打开一个 xlsx 文件,该文件在右侧单元格中具有“测试”值。
当我启动第二个文件时,我被要求打开/保存的文件不知何故是一个损坏的文件,似乎是由发送的 HTML 标头组成的。
此处提供了一个输出文件示例(不是来自这个最小示例,而是来自制作最小示例的原始文件):https://mega.co.nz/#!HgpVDSAZ!tIYORzqX8GkFqiRQgWNTH_0J8zC0JyBfSLVejskqh-E
代码有什么问题?
【问题讨论】:
-
所有的标题或只是其中的一些?
-
我不知道。我已将 .csv 文件的链接添加到问题中,以获取保存损坏的下载文件。
-
我已经用一个最小(非)工作示例编辑了这个问题。
标签: php http-headers content-type