• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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文件

    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) {
          //
        }
      }
    }
    
    

    更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

    希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP实现文件上传操作和封装
    • PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
    • php利用ZipArchive类操作文件的实例
    • PHP 文件写入和读取操作实例详解【必看篇】
    • php遍历目录下文件并按修改时间排序操作示例
    • PHP 实现文件压缩解压操作的方法
    • PHP微信网页授权的配置文件操作分析
    • PHP文件操作简单介绍及函数汇总
    上一篇:thinkphp5.1框架模板赋值与变量输出示例
    下一篇:tp5.1 框架数据库高级查询技巧实例总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    thinkphp5.1 框架导入/导出excel文件操作示例 thinkphp5.1,框架,导入,导出,