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

Why my Excel file does not open with PHP?

我需要在 Excel 文件中进行数据导出,我认为很简单:)

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

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

  1. 创建 Xlsx 电子表格
  2. 保存在硬盘上
  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');

结果:文件是在文件夹 'export' 上创建的,我可以用 Windows 打开它。 但是,当文件下载到默认下载文件夹时,我无法打开它。我有这个错误:Excel 遇到了不可读的内容

你知道为什么会出现这个问题吗?

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

既然你知道 $writer->save($fileName) 有效,你可以尝试,而不是调用 $writer->save('php://output') 你可以 $writer->save($fileName); header(...); echo file_get_contents($fileName); 尝试不同的 content-types 也可能是值得的