phpspreadsheet - 下载PHPSpreedsheet excel文件以损坏的文件结尾
问题描述
我使用 PhpSpreadsheet 库创建一个 xls 并下载它,但文件已损坏。xls 将写入输出流,不创建文件。
我试图创建一个空的电子表格,但它失败了。您可以在以下代码示例中看到它:
$spreadsheet = new Spreadsheet();
$writer = new Xls($spreadsheet);
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Auswertung_Allgemeinkosten.xls"');
header("Pragma: no-cache");
header("Expires: 0");
header('Cache-Control: max-age=0');
$writer->save('php://output');
如果我打开下载的文件,则会显示以下消息:
“'Auswertung_Allgemeinkosten.xls' 的文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非您信任其来源,否则不要打开它。仍然要打开它吗?”
这是文件的样子:
解决方案
为什么不使用空模板并这样做呢?
$path = "<PATH TO EXCEL>/empty.xlsx";
$targetPath= "<PATH TO TARGET>";
//generate Reader
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
//Gen workbook
$spreadsheet = $reader->load($path);
//Do Your Stuff
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save($targetPath);
推荐阅读
- python - Ansible Python API - 如何获取在 vars_files、host_vars、group_vars 中定义的变量
- python - pytorch 自定义数据集:DataLoader 返回张量列表而不是列表的张量
- mergesort - 我正在尝试在 python 中编写合并排序,但是当我输入不同的列表时输出不同
- sas - SAS 中的配对条形图
- outlook - 如何在 Outlook 插件中添加导航按钮?
- apache - Apache 未正确加载文档根目录
- flutter - 如何检查键盘是否可见?
- aframe - 在框架中检测 Quest 上的 VR 功能
- spring - 无法在 ignite 中创建客户端-服务器连接
- c++ - 关于 `std::vector::push_back` 的声明的选择