昨天的导入功能虽然完成,但今日发现了BUG,由于Excel里的日期格式转换到PHP里会变成一串数字常量。经过搜索大量文章得知,是由于$reader->setReadDataOnly(TRUE); #设置为只读对象,这样会导致phpspreadsheet不去识别日期和数字,所以注释掉上面行代码,添加了识别日期的功能,代码如下:
if($dataType = $cell->getDataType() == \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_NUMERIC) {
$coordinate = $cell->getCoordinate(); #获取单元格定位 e.g. F2
$formatCode = $worksheet->getStyle($coordinate)->getNumberFormat()->getFormatCode(); #格式代码
// var_dump($data);
if($formatCode !== "General") { #判断是否是日期格式
$data = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($data); #将Excel表里的日期格式转换成php的时间戳
$data = date('Y/m/d',$data); #转换成2016/03/03格式
}
}
继昨天的进度条功能,通过axios里的onUploadProgress方法里获取progressEvent,可以实现进步条功能,但是由于我是直接导入Excel表并直接写入数据库,所以数据量大的话只能数据库写入需要一段时间,由于目前不知道如何获取数据库写入的进度相关的数据,所以只能放弃进度功能。
目前通过bs里的alert方法,来实现提醒用户数据正在写入数据库,当写入完成,alert success