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

PHPExcel转换工具异常:CSV转Xlsx报错且生成文件含中文字体问题

解决PHPExcel转换CSV到Xlsx的报错与中文字体问题

嘿,我来帮你搞定这两个头疼的问题——"Error PHP EXECL"报错和中文字体显示异常!先从你的代码和常见坑入手分析:

一、排查"Error PHP EXECL"报错

你的代码里有几个容易踩的坑,先逐一排查:

  • 路径错误:你写的include 'PHPExcel/PHPExcel/IOFactory.php';大概率有问题,IOFactory.php通常在PHPExcel的根目录下,不是嵌套的PHPExcel/PHPExcel文件夹里,改成include 'PHPExcel/IOFactory.php';试试(前提是PHPExcel解压后直接放在项目根目录)
  • 依赖缺失:确认PHPExcel的完整库都上传到服务器了,别漏了核心文件比如PHPExcel.php、Reader/CSV.php这些
  • 权限不足:确保脚本能读取你的CSV源文件,同时有写入Xlsx输出文件的权限
  • 代码截断:你的代码里setIn...没写完,应该是设置CSV的输入编码,比如$objReader->setInputEncoding('GBK');,编码设置不对会导致读取CSV失败触发报错

二、解决中文字体显示问题

PHPExcel默认不会自动设置中文字体,所以导出的Xlsx里中文容易乱码或显示异常,解决方法很简单:在创建Excel对象后,全局设置支持中文的字体,比如微软雅黑、宋体。

修正后的完整示例代码

我把你的代码补全并修复了问题,直接用这个试试:

<?php
// 修正路径:确保IOFactory.php的位置正确
include 'PHPExcel/IOFactory.php';

try {
    // 初始化CSV读取器
    $objReader = PHPExcel_IOFactory::createReader('CSV');
    // 设置分隔符(如果你的CSV用制表符分隔就保留,逗号分隔就删掉这行)
    $objReader->setDelimiter("\t");
    // 根据你的CSV实际编码设置,比如GBK/UTF-8
    $objReader->setInputEncoding('GBK');
    
    // 读取CSV文件(替换成你的CSV文件路径)
    $objPHPExcel = $objReader->load('your_input.csv');

    // 设置全局中文字体,解决显示问题
    $defaultStyle = $objPHPExcel->getDefaultStyle();
    $defaultStyle->getFont()->setName('微软雅黑');
    $defaultStyle->getFont()->setSize(12);

    // 初始化Xlsx写入器
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    // 关闭预计算公式,提升导出速度并避免编码问题
    $objWriter->setPreCalculateFormulas(false);
    // 导出Xlsx文件(替换成你的输出路径)
    $objWriter->save('your_output.xlsx');

    echo "CSV转Xlsx成功!";
} catch (Exception $e) {
    // 捕获异常并输出详细错误(生产环境建议改成日志记录)
    echo "错误信息:" . $e->getMessage();
}
?>

额外注意事项

  • 编码一致性:CSV文件的编码必须和setInputEncoding设置的一致,比如你的CSV是UTF-8编码,就把参数改成'UTF-8'
  • 版本兼容性:PHPExcel仅支持PHP 5.3至7.1版本,如果你的PHP版本高于7.1,建议迁移到PhpSpreadsheet(它是PHPExcel的官方替代项目,维护更活跃)
  • 文件路径:确认输入的CSV文件存在且可读,输出Xlsx的目录有写入权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:29:06