事故背景:
甲方反馈按照标准格式无法上传Excel表格数据,提示:头信息与配置信息不符 格式不正确。
列出了关键代码,如下:
$xls_file = trim($this->_request->getQuery('xls_file', ''));
$topic_id = trim($this->_request->getQuery('topic_id', 1));
$reader = PHPExcel_IOFactory::createReader('Excel5');
$excel = $reader->load($xls_file);
$sheet = $excel->getSheet(0);
$row = $sheet->getHighestRow();
$column = $sheet->getHighestColumn();
$model = new LeadTopicModel();
//获得标题头
$header = array();
for ($k = 'A'; $k <= $column; $k++) {
$header[] = trim($excel->getActiveSheet()->getCell("{$k}1")->getValue());
}
if ($header != $model->getFields()) {
throw new Exception('头信息与配置信息不符 格式不正确!', 4003);
}
其中$column是excel表格的列(A,B,C,D.....)
走查了一遍逻辑,发现没问题,打印了$column的数据,定位到了问题:甲方上传的Excel表格格式不对。H列虽然没有数据,但是列格式被修改过,程序会判断该列有数据,导致了该问题。
解决办法:删除该列(全选清空格式也可以)。