为什么我的 Excel 文件无法用 PHP 打开?
Why my Excel file does not open with PHP?
我需要在 Excel 文件中进行数据导出,我认为很简单:)
我使用 PhpSpreadsheet 库 (https://github.com/PHPOffice/PhpSpreadsheet)
我尝试使用 PhpSpreadsheet 示例并做一些简单的事情:
- 创建 Xlsx 电子表格
- 保存在硬盘上
- 在浏览器中打开下载
这是我的代码:
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')
之后尝试 exit
ing。对于故障排除,在 header(...)
之前,请尝试 exit
ing 以确保没有输出。
既然你知道 $writer->save($fileName)
有效,你可以尝试,而不是调用 $writer->save('php://output')
你可以 $writer->save($fileName); header(...); echo file_get_contents($fileName);
尝试不同的 content-types 也可能是值得的
我需要在 Excel 文件中进行数据导出,我认为很简单:)
我使用 PhpSpreadsheet 库 (https://github.com/PHPOffice/PhpSpreadsheet)
我尝试使用 PhpSpreadsheet 示例并做一些简单的事情:
- 创建 Xlsx 电子表格
- 保存在硬盘上
- 在浏览器中打开下载
这是我的代码:
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')
之后尝试 exit
ing。对于故障排除,在 header(...)
之前,请尝试 exit
ing 以确保没有输出。
既然你知道 $writer->save($fileName)
有效,你可以尝试,而不是调用 $writer->save('php://output')
你可以 $writer->save($fileName); header(...); echo file_get_contents($fileName);
尝试不同的 content-types 也可能是值得的