You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHPExcel读取.xls文件编码异常:如何转为UTF-8读取?

解决PHPExcel读取.xls文件字符乱码问题

嘿,我之前也踩过PHPExcel读取.xls文件字符不对的坑,结合你的问题和实际经验,给你几个靠谱的解决思路:

方法一:先将文件转换为UTF-8编码

毕竟PHPExcel对UTF-8编码的文件支持最好,你可以试试这两种转换方式:

  • 用Office软件手动转换:打开你的.xls文件,点击「另存为」,保存类型选择「CSV(逗号分隔)(*.csv)」,在弹出的编码选项里选「UTF-8」。之后你可以直接读取这个CSV文件,或者再把CSV转成xls格式使用。
  • 用命令行工具批量转换:如果是服务器上的文件,用iconv命令就行,比如原文件是GBK编码的话:
    iconv -f GBK -t UTF-8 source.xls > target_utf8.xls
    
    注意:如果不确定原文件编码,可以用file -i source.xls命令先检测一下。

方法二:在PHPExcel读取时强制处理编码

如果不想转换原文件,也可以在读取后对单元格内容做编码转换:

  • 单个单元格处理示例:
    require_once 'Classes/PHPExcel.php';
    include 'Classes/PHPExcel/IOFactory.php';
    
    $pathgalleriadeclare = '你的文件路径.xls';
    $objReader = PHPExcel_IOFactory::createReader('Excel5'); // 针对.xls格式
    $objPHPExcel = $objReader->load($pathgalleriadeclare);
    $sheet = $objPHPExcel->getActiveSheet();
    
    // 读取A1单元格并转换编码
    $cellValue = $sheet->getCell('A1')->getValue();
    // 把原编码(比如GBK)转成UTF-8,根据实际情况调整原编码参数
    $cellValue = mb_convert_encoding($cellValue, 'UTF-8', 'GBK');
    echo $cellValue;
    
  • 全局设置文档编码:初始化PHPExcel时可以指定编码,避免默认编码问题:
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setEncoding('UTF-8');
    

方法三:处理含HTML内容的单元格

如果是因为单元格里有HTML内容导致识别异常,可以先过滤标签再处理编码:

$cellValue = $sheet->getCell('A1')->getValue();
// 先去掉HTML标签
$cellValue = strip_tags($cellValue);
// 再转换编码
$cellValue = mb_convert_encoding($cellValue, 'UTF-8', 'GBK');

要是需要保留HTML结构,记得确保HTML本身是UTF-8编码的,这样PHPExcel读取后才不会乱码。

内容的提问来源于stack exchange,提问作者Virgil Cruz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:25:16