From 07a44e104d9687fc561c6c261275ea6e334d6a8c Mon Sep 17 00:00:00 2001 From: wong <106998207@qq.com> Date: Fri, 28 Nov 2025 16:48:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E8=A1=A8=E6=A0=BC=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/controller/ExportController.php | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/Server/application/common/controller/ExportController.php b/Server/application/common/controller/ExportController.php index 8d2a8079b..704a3d851 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; }