public function importExcel()
{
try {
//获取表格的大小,限制上传表格的大小
if ($_FILES['file']['size'] > 10 * 1024 * 1024) { //文件过大
log_debug($log_title . 'END === MSG:' . '文件过大');
parent::endBack(['state' => 0, 'msg' => '文件过大']);
}
//限制上传表格类型
$ext = substr(strrchr($_FILES['file']["name"], '.'), 1);
if ($ext != 'xls' && $ext != 'xlsx') {
log_debug($log_title . 'END === MSG:' . '文件格式不正确');
parent::endBack(['state' => 0, 'msg' => '上传文件必须为excel表格']);
}
//读取表格
$filename = $_FILES['file']['tmp_name'];
$reader = IOFactory::createReader('Xlsx'); //Xls,Xlsx都可读取
$canRead = $reader->canRead($filename);
if (!$canRead) {
log_debug($log_title . 'END,文件格式不正确,SQL:' . Db::name('')->getLastSql());
parent::endBack(['state' => 0, 'msg' => '文件格式不正确', 're_login' => false]);
}
$spreadsheet = $reader->load($filename); //载入excel表格
$worksheet = $spreadsheet->getActiveSheet(); //选中sheet表
$highestRow = $worksheet->getHighestRow(); // 总行数
// $highestColumn = $worksheet->getHighestColumn(); // 总列数
if (!(0 < $highestRow)) {
log_debug($log_title . 'END,文件内容空,SQL:' . Db::name('')->getLastSql());
parent::endBack(['state' => 0, 'msg' => '文件没有数据', 're_login' => false]);
}
//循环读取--有效判断
$sst_word_arr = []; //存放敏感词的数组
for ($row = 1; $row <= $highestRow; $row++) {
//取列数A列的数据
$tmp_word = $spreadsheet->getActiveSheet()->getCell('A' . $row)->getValue();
if ('' != trim($tmp_word) && null != $tmp_word) {
$sst_word_arr[] = $tmp_word;
break; //发现有效数据,直接退出,接下来插入数据
}
}
// $sst_word_arr = array_unique($sst_word_arr);
if (empty($sst_word_arr)) {
log_debug($log_title . 'END,文件无有效数据,SQL:' . Db::name('')->getLastSql());
parent::endBack(['state' => 0, 'msg' => '文件无有效数据', 're_login' => false]);
}
//判断和数据库操作
for ($row = 2; $row <= $highestRow; $row++) {
//取列数A列的数据
$tmp_old_car_num = $spreadsheet->getActiveSheet()->getCell('A' . $row)->getValue();
$car_num = trim($tmp_old_car_num);
if ('' != $car_num && null != $car_num) {
//数据库操作
}
}
}
$ret_arr = [
'state' => 1,
//返回数据
];
log_debug($log_title . 'END,SUCCESS');
parent::endBack($ret_arr);
} catch (\Exception $e) {
//
}
}
excel文件格式为: