为什么我的Excel文件无法用PHP打开?

时间:2019-07-16 14:20:01

标签: php excel phpspreadsheet

我需要在Excel文件中进行数据导出,我很容易:)

我使用PhpSpreadsheet库(https://github.com/PHPOffice/PhpSpreadsheet

我尝试使用PhpSpreadsheet示例并做一些简单的事情:

  1. 创建Xlsx电子表格
  2. 保存在hardrive上
  3. 在浏览器中打开以下载

有我的代码:

require_once $this->config->application->libraryDir . 'PhpSpreadsheet-master/vendor/autoload.php';

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xlsx($spreadsheet);
$fileName = 'export/hello_world.xlsx';
$writer->save($fileName);

// header('Location: '.$fileName);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$fileName.'"');
header('Cache-Control: max-age=0');
$writer->save('php://output');

结果:该文件是在“导出”文件夹中创建的,可以在Windows中打开它。 但是,当文件在默认的下载文件夹中下载时,我无法打开它。我遇到此错误:Excel遇到无法读取的内容

您知道为什么会出现此问题吗?

1 个答案:

答案 0 :(得分:1)

exit之后尝试$writer->.save('php://output')。为了进行故障排除,在进行header(...)之前,请尝试exit,以确保没有输出。

而且由于您知道$writer->save($fileName)可以工作,所以可以尝试,而不用打电话给$writer->save('php://output'),而可以$writer->save($fileName); header(...); echo file_get_contents($fileName);尝试其他内容类型也很值得