导出Excel xlsx文件报错:无法加载DOM文档,含0-600°C数据如何解决?
解决方案
方法1:转义特殊字符为HTML实体
在导出前把数据中的°替换成对应的HTML实体°,让DOM解析能正确识别:
// 导出类的map方法中处理字段 public function map($item): array { return [ str_replace('°', '°', $item->product_name), // 其他字段... ]; }
或者直接在查询数据时处理:
SELECT REPLACE(product_name, '°', '°') AS product_name FROM your_table;
方法2:设置单元格为纯文本格式
强制导出时把包含特殊字符的单元格设为纯文本,跳过HTML解析逻辑:
use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Events\AfterSheet; class YourExportClass implements WithEvents { public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { // 覆盖数据所在的单元格范围,比如A2:Z1000 $event->sheet->getDelegate()->getStyle('A2:Z1000') ->getNumberFormat() ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT); }, ]; } }
方法3:检查数据库字符集
确保存储数据的表使用utf8mb4字符集,避免特殊字符存储异常:
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
内容的提问来源于stack exchange,提问作者khush
相关产品推荐
相关产品推荐

