PHPExcel导出Excel报错:PHPExcel_IOFactory::load()的解决方案
更新时间:2023年11月29日 09:50:21 作者:moTzxx
这篇文章主要介绍了PHPExcel导出Excel报错:PHPExcel_IOFactory::load()的解决方案,文中有详细的问题分析和解决方法供大家参考,具有一定的参考价值,需要的朋友可以参考下
背景
- 近期在做 excel文件数据导出时,遇到如下报错:
iconv(): Detected an illegal character in input string - 场景:计划任务后台,分步导出 大数据 excel文件
- 发现在加载文件时,会有报错
报错信息 如下:
{
"name": "PHP Notice",
"message": "iconv(): Detected an illegal character in input string",
"code": 8,
"type": "yii\\base\\ErrorException",
"file": "/usr/share/nginx/html/ycsh_automat/Classes/PHPExcel/Shared/String.php",
"line": 490,
"stack-trace": [
"#0 [internal function]: yii\\base\\ErrorHandler->handleError(8, 'iconv(): Detect...', '/usr/share/ngin...', 493, Array)",
"#1 /usr/share/nginx/html/ycsh_automat/Classes/PHPExcel/Shared/String.php(490): iconv('CP1252', 'UTF-8', '\\xE8\\xAE\\xA2\\xE5\\x8D\\x95\\xE5\\x88\\x97\\xE8\\xA1\\xA8\\x00\\x00\\x00...')",
"#2 /usr/share/nginx/html/ycsh_automat/Classes/PHPExcel/Reader/Excel5.php(1362): PHPExcel_Shared_String::ConvertEncoding('\\xE8\\xAE\\xA2\\xE5\\x8D\\x95\\xE5\\x88\\x97\\xE8\\xA1\\xA8\\x00\\x00\\x00...', 'UTF-8', 'CP1252')",
"#3 /usr/share/nginx/html/ycsh_automat/Classes/PHPExcel/Reader/Excel5.php(633): PHPExcel_Reader_Excel5->readSummaryInformation()",
"#4 /usr/share/nginx/html/ycsh_automat/Classes/PHPExcel/IOFactory.php(192): PHPExcel_Reader_Excel5->load('/usr/share/ngin...')",
"#5 /usr/share/nginx/html/ycsh_automat/common/services/ExcelMzService.php(154): PHPExcel_IOFactory::load('/usr/share/ngin...')",
"#6 /usr/share/nginx/html/ycsh_automat/common/models/ExportTask.php(306): common\\services\\ExcelMzService->cronCreateExportFile(Array, Array, '/usr/share/ngin...', Array, '\\xE8\\xAE\\xA2\\xE5\\x8D\\x95\\xE5\\x88\\x97\\xE8\\xA1\\xA8')",
"#7 /usr/share/nginx/html/ycsh_automat/api/controllers/CronController.php(54): common\\models\\ExportTask::execExportTask(Object(common\\models\\ExportTask), 1, '{\"search_params...')",
"#8 [internal function]: api\\controllers\\CronController->actionRunExportTask()",
...
}
问题分析
- 根据详细报错信息,可以知道,是执行 PHPExcel_IOFactory::load() 方法时,因为文件名编码问题造成程序中断
- 业务场景中,即在分步追加 excel文件数据,加载文件名时,识别转码有误
- 继而定位到 Classes\PHPExcel\Shared\String.php 的 ConvertEncoding() 方法的的第一个条件判断不满足
解决方案
修改文件 Classes\PHPExcel\Shared\String.php 的 ConvertEncoding() 方法的的第一个条件判断,如下

附录
- 网上的经验,基本为 php iconv() : Detected an illegal character in input string, 测试发现都无法解决我的问题
- 重点提示:当前报错,在
windows环境中,不会报错,只有上传到Linux服务器,才会有报错!
以上就是PHPExcel导出Excel报错:PHPExcel_IOFactory::load()的解决方案的详细内容,更多关于PHPExcel导出Excel报错的资料请关注脚本之家其它相关文章!
相关文章
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
这篇文章主要介绍了PHP操作redis实现的分页列表,新增,删除功能封装类与用法,结合实例形式分析了php针对redis数据库基本的连接、查询、添加、分页等操作封装与使用技巧,需要的朋友可以参考下2018-08-08
对text数据类型不支持代码页转换 从: 1252 到: 936
错误的提示同样是不能从text的转换问题:这主要是由于数据库在设计的时候的数据类型存在Text——而我们采用的是中文操作系统。检查数据库的脚本,修改Text为ntext。支持unicode。2011-04-04


最新评论