当前位置: 首页 > news >正文

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()", ...
}

问题分析

  1. 根据详细报错信息,可以知道,是执行 PHPExcel_IOFactory::load() 方法时,因为文件名编码问题造成程序中断
  2. 业务场景中,即在分步追加 excel文件数据,加载文件名时,识别转码有误
  3. 继而定位到 Classes\PHPExcel\Shared\String.phpConvertEncoding() 方法的的第一个条件判断不满足

解决方案

  • 修改文件 Classes\PHPExcel\Shared\String.phpConvertEncoding() 方法的的第一个条件判断,如下

附录

  1. 网上的经验,基本为 php iconv() : Detected an illegal character in input string, 测试发现都无法解决我的问题
  2. 重点提示:当前报错,在 windows 环境中,不会报错,只有上传到 Linux 服务器,才会有报错!
http://www.lryc.cn/news/250506.html

相关文章:

  • Jmeter-分布式压测(远程启动服务器,windows)
  • 【C++】string类模拟实现过程中值得注意的点
  • 大数据湖项目建设方案:文档全文101页,附下载
  • 通付盾Web3专题 | SharkTeam:起底朝鲜APT组织Lazarus Group,攻击手法及洗钱模式
  • <蓝桥杯软件赛>零基础备赛20周--第8周第1讲--十大排序
  • 数据增强让模型更健壮
  • Redis远程字典服务
  • Hdoop学习笔记(HDP)-Part.15 安装HIVE
  • vue3+element-plus之el-date-picker日期选择器清空无回调的解决方案
  • 【虚拟机】Docker基础 【二】
  • CSS 绝对定位问题和粘性定位介绍
  • matlab 计算两点云之间的放缩倍数
  • MySQL-数据库设计与实现
  • 后端返回图片流前端展示图片
  • 解决 from . import _imaging as core ImportError: DLL load failed: 找不到指定的模块。
  • springBoot3.2 + jdk21 + GraalVM上手体验
  • Python float(input())的用法,web中的应用
  • uniapp是否可以用elementUI等前端UI库、使用步骤以及需要注意的问题
  • 在vue中如何书写 SSR 友好的代码
  • 开源与闭源:数字时代大模型之辩
  • 卷积神经网络(VGG-16)猫狗识别
  • Mysql 行转列,把逗号分隔的字段拆分成多行
  • 基于单片机设计的智能水泵控制器
  • 反转链表的实现
  • python之pyqt专栏6-信号与槽2
  • C语言中一些特殊字符的输出
  • Opencv制作电子签名(涉及知识点:像素过滤,图片通用resize函数,像素大于某个阈值则赋值为其它的像素值)
  • 【漏洞复现】大华智慧园区综合管理平台deleteFtp接口远程命令执行
  • Unity Image - 镜像
  • 深入Spring Security魔幻山谷-获取认证机制核心原理讲解(新版)