导出表格优化兼容
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user