温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何操作thinkphp5.1 框架导入/导出excel文件

发布时间:2021-03-08 15:29:27 阅读:239 作者:TREX 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍“如何操作thinkphp5.1 框架导入/导出excel文件”,在日常操作中,相信很多人在如何操作thinkphp5.1 框架导入/导出excel文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何操作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文件

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_path0777true);
      }
 
      $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文件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×