phpexcel 导入数据 Invalid cell coordinate
·
phpexcel 导入报错Invalid cell coordinate
报错这个原因是因为,在读取单元格时A-Z 的单元格没问题,再继续读取单元从AA开始,依次往后,例如下图

我使用的是 PhpOffice\PhpSpreadsheet 这个版本的phpexcel
下面是我的解决方案,一般导入的excel模板都是固定的,我把单元格读取列直接写到数组,循环读取
$pos = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X',
'Y','Z','AA','AB','AC','AD','AE','AF'];
以下是我的导入代码
/**
* 读取excel
* @param $file_name 服务器文件路径
* @param $index 读取excel第几个sheet 默认第一个
* @param $read_row 从excel 的几行还是读取数据 我的默认是从第三行开始读取
* @param $col_num 读取到excel的第几列
* @param int $index
* @return array
*/
function import_xls($filename,$index = 0, $read_row = 3, $col_num = 0)
{
$ext = pathinfo($filename, PATHINFO_EXTENSION );
$ext = strtolower($ext);
$ext = ucfirst($ext);
if (!in_array($ext,['Xls', 'Xlsx'])) {
throw new \think\Exception('只允许上传excel文件');
}
$objReader = IOFactory::createReader($ext);
$objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格
$sheet = $objPHPExcel->getSheet($index); //excel中的第一张sheet
//获取总行数
$row_num = $sheet->getHighestRow();
//获取总列数
$col_num = $col_num ? $col_num : $sheet->getHighestColumn();
$title = [];
$content = [];
$pos = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X',
'Y','Z','AA','AB','AC','AD','AE','AF'];
for ($row = $read_row; $row <= $row_num; $row++) {
$row_cell = [];
foreach($pos as $v){
//$cell = $sheet->getCell($v . $row)->getValue();
$cell = $sheet->getCell($v . $row)->getFormattedValue();
array_push($row_cell, $cell);
}
array_push($content, $row_cell);
}
return ['content' => $content];
}
phpexcel 获取格式化后的数据
$row['date'] = $worksheet->getCell("G{$rowIndex}")->getFormattedValue(); // 获得日期的格式化数值
phpexcel 获取公式计算后的数据
$row['quantity'] = $worksheet->getCell("F{$rowIndex}")->getCalculatedValue(); // 获得公式计算值
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)