function import() { // 施工员/调度员 四车间 if (!has_perm(1, 4) && !has_perm(2, 4)) { exit; } $name = $_FILES['files']['name'][0]; $size = $_FILES['files']['size'][0]; $tmp_name = $_FILES['files']['tmp_name'][0]; if (get_file_ext($name) != 'xls') { $results['error'] = '对不起,系统只允许上传扩展名为 <strong>xls</strong> 的电子表格文件!'; $results['is_success'] = false; } else { if ($size > 2000000) { $results['error'] = '对不起,系统只允许上传小于 <strong>2M</strong> 的电子表格文件!'; $results['is_success'] = false; } else { if (!empty($tmp_name)) { $data = new \Spreadsheet_Excel_Reader(); $data->setOutputEncoding('UTF-8'); $cols = 6; /* 每一行有6个单元格 */ $rows = array(); $data->read($tmp_name); error_reporting(E_ALL ^ E_NOTICE); // 对电子表格的每一行进行循环 // 检测到某个单元格不存在时,设定其为空值 foreach ($data->sheets[0]['cells'] as $row) { for ($i = 1; $i <= $cols; $i++) { if (!isset($row[$i])) { $row[$i] = ''; } // 计划完成时间 if ($i == 6 && !empty($row[$i])) { $row[$i] = change_date_style($row[$i]); } } $rows[] = $row; } //debug( $rows ); // 导入数据库 foreach ($rows as $row) { $prod_num = $row[1]; $prod = Production::find_by_num($prod_num); // 当这条零件记录所对应的生产指令 prod 存在时 if (!empty($prod)) { $part = new \Model\Part(); $part->production_id = $prod->id; $part->num = $row[2]; $part->name = $row[3]; $part->graphic_num = $row[4]; $part->count = $row[5]; $part->planned_completion_date = $row[6]; $part->user_id = $_SESSION['user_id']; if ($part->is_valid()) { $part->save(); } else { // 如果某条导入失败 // 记录该条目的零件指令号,零件名称 // 以及具体的错误原因 $errors = array(); foreach ($part->errors as $error) { $errors[] = $error; } $results['failed_items'][] = array('num' => $part->num, 'name' => $part->name, 'errors' => $errors); } } } //debug( $results['failed_items'] ); $results['is_success'] = true; } } } echo json_encode($results); }