首页 > 解决方案 > PhpSpreadsheet:表格在此过程中丢失

问题描述

我有一个用 PhpSpreadsheet 读写的 Excel 文件。我所有的表格和参考资料都在这个过程中消失了。是否需要将标志设置为 true/false,或者表格只是 PhpSpreadsheet 无法处理的东西?查看导出前后的屏幕截图。

我已经尝试了这些不同的真/假组合,但没有任何setIncludeCharts(true);运气setPreCalculateFormulas(true)

我在这里遗漏了什么明显的东西吗?

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
$spreadsheet = $reader->load("template.xlsx");

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="result.xlsx"');
header('Cache-Control: max-age=0');

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit;

error_reporting(0)如果与它有任何关系,我会压制这些通知/警告。然而,这是在 PhpSpreadsheet 代码中,我不应该真正搞砸:

Notice: Undefined offset: 2 in
/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php
on line 3472

Warning: trim() expects parameter 1 to be string, array given in
/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php
on line 3680

我还尝试了给我这个错误的同一模板的不同版本:

Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Exception: Invalid cell
coordinate 1))) in
vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Coordinate.php:42
Stack trace: #0
vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Coordinate.php(111):
PhpOffice\PhpSpreadsheet\Cell\Coordinate::coordinateFromString('1)))')
#1 vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Coordinate.php(86):
PhpOffice\PhpSpreadsheet\Cell\Coordinate::absoluteCoordinate('1)))')
#2 vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php(416):
PhpOffice\PhpSpreadsheet\Cell\Coordinate::absoluteReference('1)))') #3
vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php(267):
PhpOffice\PhpSpreadsheet\Writer\Xlsx\Workbook->writeDefinedNameForPrintArea(Object(PhpOffice\PhpSpreadsheet\Shared\XMLWriter),
Object(PhpOffice\PhpS in
vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Coordinate.php
on line 42

在此处输入图像描述 在此处输入图像描述

标签: phpexcelphpspreadsheet

解决方案


Smarttables 在后台使用数据透视表。我发现解决这个问题的唯一方法是手动设置单元格的样式。


推荐阅读