thinkphp5.1 框架导入/导出excel文件操作示例
程序员文章站
2022-06-30 10:18:46
本文实例讲述了thinkphp5.1 框架导入/导出excel文件操作。分享给大家供大家参考,具体如下:thinkphp5.1 导入excel文件public function importexcel...
本文实例讲述了thinkphp5.1 框架导入/导出excel文件操作。分享给大家供大家参考,具体如下:
thinkphp5.1 导入excel文件
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文件格式为:
thinkphp5.1 导出excel文件
namespase app\test; use phpoffice\phpspreadsheet\iofactory; use phpoffice\phpspreadsheet\spreadsheet; use phpoffice\phpspreadsheet\writer\xlsx; class test { public function carnumsexport() { $log_title = '测试 => 车牌列表导出[' . __method__ . '] '; try { $file_name = '《车牌列表》from y8zh - ' . $user_info['uid'] . '.xlsx'; $file_relative_path = parent::$module_name . directory_separator . 'fcb_car_nums' . directory_separator; $file_path = parent::$api_file_root_path . $file_relative_path; // 已生成过则直接返回 if (file_exists($file_path . $file_name)) { $ret_arr = [ 'state' => 1, 'download_url' => parent::$api_file_get_url . $file_relative_path . $file_name, ]; parent::endback($ret_arr); } if (!is_dir($file_path)) { mkdir($file_path, 0777, true); } $spreadsheet = new spreadsheet(); $sheet = $spreadsheet->getactivesheet(); //获取所有车牌号 $car_nums = db::connect('db_config_yun')->name('vechicle')->column('distinct number'); $i = 1; $sheet->setcellvalue('a' . $i, '车牌号')->getstyle('a' . $i)->getfont()->setbold(true); $i++; // 表内容 if (!empty($car_nums)) { foreach ($car_nums as $k_c => $v_c) { $sheet->setcellvalue('a' . $i, $v_c); $i++; } } $writer = new xlsx($spreadsheet); $writer->save($file_path . $file_name); $ret_arr = [ 'state' => 1, 'download_url' => parent::$api_file_get_url . $file_relative_path . $file_name, ]; log_debug($log_title . 'end === download_url:' . $ret_arr['download_url']); parent::endback($ret_arr); } catch (\exception $e) { // } } }
推荐阅读
-
thinkphp5.1 框架导入/导出excel文件操作示例
-
thinkPHP5框架导出Excel文件简单操作示例
-
ThinkPHP 框架实现的读取excel导入数据库操作示例
-
CI框架(CodeIgniter)实现的导入、导出数据操作示例
-
CI框架(CodeIgniter)实现的导入、导出数据操作示例
-
thinkPHP5框架导出Excel文件简单操作示例
-
CI框架(CodeIgniter)实现的导入、导出数据操作示例
-
ThinkPHP 框架实现的读取excel导入数据库操作示例
-
yii2.0框架实现上传excel文件后导入到数据库的方法示例
-
CI框架(CodeIgniter)实现的导入、导出数据操作示例