使用PHP simplexlsxgen导出Excel时HTML特殊字符显示异常问题
解决SimpleXLSXGen导出Excel时<>无法正常显示的问题
问题原因
直接写入<<NEW>>时,XML会将<视为非法字符,导致生成的Excel XML结构出错,对应单元格内容被丢弃;使用htmlspecialchars处理后,内容被转义为<<NEW>>,但Excel未自动解析为原始符号,所以显示转义后的字符串。
解决方案
方案1:指定单元格类型为字符串
SimpleXLSXGen支持通过关联数组定义单元格的value和type,指定type为str可强制将内容按纯文本处理,自动完成合法的XML转义,同时Excel会正确显示原始符号:
$excelArr = [ ['DOC', 'DOCDATE'], [['value' => '<<NEW>>', 'type' => 'str'], '05/01/2023'] ]; $xlsx = $this->simplexlsxgen->fromArray($excelArr); $xlsx->saveAs('output.xlsx');
方案2:手动转义+强制文本类型
如果方案1不生效,可手动转义特殊字符后,同样指定单元格类型为字符串:
$newValue = str_replace(['<', '>'], ['<', '>'], '<<NEW>>'); $excelArr = [ ['DOC', 'DOCDATE'], [['value' => $newValue, 'type' => 'str'], '05/01/2023'] ]; $xlsx = $this->simplexlsxgen->fromArray($excelArr); $xlsx->saveAs('output.xlsx');
方案3:利用Excel文本输入技巧
在字符串前添加单引号,Excel会自动忽略开头的单引号,将后续内容视为纯文本显示:
$excelArr = [ ['DOC', 'DOCDATE'], ['\'<<NEW>>', '05/01/2023'] ]; $xlsx = $this->simplexlsxgen->fromArray($excelArr); $xlsx->saveAs('output.xlsx');
内容的提问来源于stack exchange,提问作者Eaten Taik
相关产品推荐
相关产品推荐

