diff --git a/Server/application/common/controller/ExportController.php b/Server/application/common/controller/ExportController.php index 8d2a8079..704a3d85 100644 --- a/Server/application/common/controller/ExportController.php +++ b/Server/application/common/controller/ExportController.php @@ -49,6 +49,9 @@ class ExportController extends Controller throw new Exception('导出数据不能为空'); } + // 抑制 PHPExcel 库中已废弃的大括号语法警告(PHP 7.4+) + $oldErrorReporting = error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); + // 默认选项 $imageWidth = isset($options['imageWidth']) ? (int)$options['imageWidth'] : 100; $imageHeight = isset($options['imageHeight']) ? (int)$options['imageHeight'] : 100; @@ -70,15 +73,15 @@ class ExportController extends Controller $titleRow = isset($options['titleRow']) ? $options['titleRow'] : null; $dataStartRow = 1; // 数据开始行(表头行) - // 如果有标题行,先写入标题行 - if ($titleRow && is_array($titleRow) && !empty($titleRow)) { + // 如果有标题行,先写入标题行(支持数组或字符串) + if (!empty($titleRow)) { $dataStartRow = 2; // 数据从第2行开始(第1行是标题,第2行是表头) // 合并标题行单元格(从第一列到最后一列) $titleRange = 'A1:' . $lastColumnLetter . '1'; $sheet->mergeCells($titleRange); - // 构建标题内容(支持多行) + // 构建标题内容(支持多行数组或字符串) $titleContent = ''; if (is_array($titleRow)) { $titleContent = implode("\n", $titleRow); @@ -253,9 +256,17 @@ class ExportController extends Controller header('Cache-Control: max-age=0'); header('Content-Disposition: attachment;filename="' . $safeName . '"'); - $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); - $writer->save('php://output'); - + try { + $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); + $writer->save('php://output'); + } catch (\Exception $e) { + // 恢复错误报告级别 + error_reporting($oldErrorReporting); + throw $e; + } + + // 恢复错误报告级别 + error_reporting($oldErrorReporting); self::cleanupTempFiles(); exit; }