保存电子表格时如何避免Excel“格式错误”

时间:2018-12-13 09:50:24

标签: phpspreadsheet

使用PHPSpreadsheet保存XLSX格式可以正常运行默认代码

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); 
$writer->save("filename.xlsx");

但是如果我想让用户使用

选择目标目录
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="filename.xlsx"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadSheet, 'Xlsx');
$writer->save('php://output');

文件保存确定,但Excel 2016不想打开它。 Excel返回以下错误 Excel Error

我浏览了所有文档和帖子,但是找不到解决方案。

谢谢!

编辑:以防万一,此solution对我不起作用。

编辑2:提供的示例提供了简单下载Xlsx完美运行的功能,但是当对电子表格进行复制/粘贴时,Chrome给了我一个 Resource interpreted as Document but transferred with MIME type application/octet-stream

编辑3:使用 ob_end_flush();清除代码中所有残留的标题。 文件现在保存确定,但是在Excel中打开时需要修复。为什么?

谢谢

1 个答案:

答案 0 :(得分:0)

解决方案:

来自PhpSpreadsheet的错误。

使用时 header("Content-Type: application/vnd.ms-excel");

即Excel的兼容模式,文件将打开。