明天一个线上我的项目反馈导入 excel 文件时,网页间接卡死,导入 excel 文件时失败,通过一步一步的验证发现是在读取 excel 文件时卡死,此我的项目应用的是 phpoffice/phpexcel 拓展,最初发现是在执行 load 办法加载 excel 文件时呈现卡死,之前在导入 excel 文件始终是失常的,而且 excel 中的数据也不是很多,到底是因为什么起因造成的呢?
最初在查找 phpoffice/phpexcel 官网文档中发现,这是因为 excel 文件中存在了某些特殊字符导致了加载 excel 文件时解体,既然找到了起因,就肯定有解决办法,在 phpoffice/phpexcel 中有一个属性能够解决此办法 readDataOnly,此属性在拓展中默认时 false,咱们须要将 readDataOnly 属性设置为 true
$PHPExcel->setReadDataOnly(true); // 过滤 excel 中的特殊字符
所以残缺的读取 excel 的代码如下:
$PHPExcel = new PHPExcel_Reader_Excel2007();
$file = 'excel 文件';
try {if (!$PHPExcel->canRead($file)) {
// 默认用 excel2007 读取 excel,若格局不对,则用之前的版本进行读取
$PHPExcel = new PHPExcel_Reader_Excel5();}
$PHPExcel->setReadDataOnly(true); // 过滤 excel 中的特殊字符
$excel = $PHPExcel->load($file);// 加载 excel
// 读取 excel 文件中的第一个工作表
$currentSheet = $excel->getSheet(0);
} catch (Exception $e) {throw new InvalidValueException('请抉择正确的导入文件!');
}
$allRow = $currentSheet->getHighestRow() - 1; // 获取 excel 总行数
// 读取 excel 信息
for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
// 读取指定列数据 0 示意第一列
$currentSheet->getCellByColumnAndRow(0, $currentRow + 1)->getValue()}