💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### CSV 导入 jig 2018-1-30 **位置:** Common\Tools\CsvTools.class.php **参数:** * @param $title array 标题 * @param $data array 数据 * @param $filename string 文件名 **调用:** ~~~ use Common\Tools\CsvTools; // 加载文件 public function import() { $csv = new CsvTools(); // 实例化 $csv->csvImport(); // 导入操作 } ~~~ **完整代码:** ~~~ /** * 导入CSV 从BaseController import_csv 迁移过来 * * jig 2017-11-30 * @param $column int 内容多少列 * @param $head 1 为1的时候输出表头 * @return array */ function csvImport ($column, $head = '') { // 文件路径 文件内容 // setlocale(LC_ALL, 'zh_CN'); // linux 上中文乱码 需要就打开 $flag = false; $msg = '未处理'; $maxsize = 1 * 1024 * 1024; // 1MB $max_column = 1000; // 最大条数 if (empty($column)) { $msg = '列数不能为空'; $flag = true; } // 1、调用上传类进行文件上传 $upload = new UploadTools(); $info = $upload->saveFile(); // 上传文件 if (!$info) { $msg = $upload->getError(); $flag = true; } $path = APP_ROOT . $info['file_path']; // 文件上传的路径 // 2、检测文件是否存在 if ($flag === false) { if (!file_exists($path)) { $msg = '文件不存在'; $flag = true; } } // 3、检测文件格式 if ($flag === false) { if ($info['ext'] != 'csv') { $msg = '只能导入CSV格式文件'; $flag = true; } } // 4、检测文件大小 if ($flag === false) { if (filesize($path) > $maxsize) { $msg = '导入的文件不得超过' . $maxsize . 'B文件'; $flag = true; } } // 5、读取文件 if ($flag === false) { $row = 0; $handle = fopen($path, 'r'); // 读取文件 $result = array(); while ($data = fgetcsv($handle, $max_column, ",")) { // 是否输出表头判断 if ($head == 1) { $row++; } // 基于表头判断表列是否一致 if ($row == 1) { if (count($data) != $column) { $msg = '文件不符合规范,请重新下载模版编辑数据'; $flag = true; break; } } /* $num = count($data); if ($num < $column) { $msg = '文件不符合规格真实有:' . $num . '列数据'; $flag = true; break; } */ if ($flag === false) { for ($i = 0; $i < $column; $i++) { if ($row == 0) { break; // 第一行标题不赋值 } $result['data'][$row][$i] = mb_convert_encoding(trim($data[$i]), 'utf-8', 'gb2312 '); // trim($data[$i]); // 赋值组合数组 } } // 不输出表头格式 if ($head != 1) { $row++; } } } $result['error'] = $flag; if ($flag === true) { $result['msg'] = $msg; // 提示错误信息判断 } return $result; } ~~~