文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

fastadmin实现导出Excel和导入Excel数据

2023-08-31 13:53

关注
         public function export()    {        if ($this->request->isPost()) {            require_once(VENDOR_PATH .'/PHPExcel-1.8/Classes/PHPExcel.php');//执行期间包含并运行指定文件(通俗一点,括号内的文件会执行一遍            set_time_limit(0);            $ids = $this->request->post('ids');                $excel = new \PHPExcel();                $excel->getProperties()                    ->setTitle("员工管理");                //设置表格参数                $excel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);                $excel->getActiveSheet()->getColumnDimension('B')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('C')->setWidth(15);                $excel->getActiveSheet()->getColumnDimension('D')->setWidth(15);                $excel->getActiveSheet()->getColumnDimension('E')->setWidth(15);                $excel->getActiveSheet()->getColumnDimension('F')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('G')->setWidth(15);                $excel->getActiveSheet()->getColumnDimension('H')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('I')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('J')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('K')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('L')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('M')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('N')->setWidth(10);                $excel->getActiveSheet()->getColumnDimension('O')->setWidth(15);                //设置表头内容                $worksheet = $excel->setActiveSheetIndex(0)                    ->setCellValue('A1', 'id')                    ->setCellValue('B1', '姓名')                    ->setCellValue('C1', '手机号')                    ->setCellValue('D1', '证件类型')                    ->setCellValue('E1', '证件号')                    ->setCellValue('F1', '性别')                    ->setCellValue('G1', '生日')                    ->setCellValue('H1', '年龄')                    ->setCellValue('I1', '是否已婚')                    ->setCellValue('J1', '地址')                    ->setCellValue('K1', '民族')                    ->setCellValue('L1', '政治面貌')                    ->setCellValue('M1', '是否健康')                    ->setCellValue('N1', '学历')                    ->setCellValue('O1', '入职日期');                    //根据情况搜索内容有其他条件可在select之前添加           if($ids=='all' || empty($ids)){                        $list = $this->model->select();                    } else {                        $list = $this->model->select($ids);                    }                    //循环添加表中内容 严谨一些可以在$val['']后添加 ?? '里面填入数据为空时的信息'                    //$val[]里面填写字段名                foreach ($list as $k => $val) {                    $k = $k + 2;                    $worksheet->setCellValue('A' . $k, $val['id'])                        ->setCellValue('B' . $k, $val['name'])                        ->setCellValue('C' . $k, $val['tel'] ."\t")                        ->setCellValue('D' . $k, $val['type'])                        ->setCellValue('E' . $k, $val['typenum'] . "\t")                        ->setCellValue('F' . $k, $val['sex'])                        ->setCellValue('G' . $k, $val['birth'])                        ->setCellValue('H' . $k, $val['age'])                        ->setCellValue('I' . $k, $val['yeson'])                        ->setCellValue('J' . $k, $val['loc'])                        ->setCellValue('K' . $k, $val['han'])                        ->setCellValue('L' . $k, $val['face'])                        ->setCellValue('M' . $k, $val['jiank'])                        ->setCellValue('N' . $k, $val['xueli'])                        ->setCellValue('O' . $k, $val['rutime']);                }                $excel->createSheet();                $title = "员工管理" . date("YmdHis");                header('Content-Type: applicationnd.openxmlformats-officedocument.spreadsheetml.sheet');                header('Content-Disposition: attachment;filename="' . $title . '.xlsx"');                header('Cache-Control: max-age=0');                header('Cache-Control: max-age=1');                header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past                header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified                header('Cache-Control: cache, must-revalidate'); // HTTP/1.1                header('Pragma: public'); // HTTP/1.0                $objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');                $objWriter->save('php://output');                exit;                return;            }    }

public function import(){            require_once(VENDOR_PATH .'/PHPExcel-1.8/Classes/PHPExcel.php');            if($this->request->isPost()){                $apply_file = $this->request->file('file');                if (!$apply_file) {                    $this->error('请上传数据文件');                }                $info = $apply_file->validate(['size'=>1567800,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . DS . 'public/uploads'. DS .'excel');                $excelname=$info->getSaveName();                $filePath = ROOT_PATH . DS . 'public/uploads/excel' . DS .  $excelname;    if (!is_file($filePath)) {                    $this->error('找不到数据文件,请重新上传');                }                $PHPReader = new \PHPExcel_Reader_Excel2007();                if (!$PHPReader->canRead($filePath)) {                    $PHPReader = new \PHPExcel_Reader_Excel5();                    if (!$PHPReader->canRead($filePath)) {                        $PHPReader = new \PHPExcel_Reader_CSV();                        if (!$PHPReader->canRead($filePath)) {$this->error('文件类型不合法');                        }                    }                }                    $excel = $PHPReader->load($filePath, $encode = 'utf-8');                $sheet = $excel->getSheet(0);                $row_num = $sheet->getHighestRow();//获取总行数                $col_num = $sheet->getHighestColumn();//获取总列数                $arr = array('A','B','C','D','E','F','G');                 $res_arr = array();// 一次读取一列                 for ($row = 2; $row <= $row_num; $row++) {                      $row_arr = array();                      for ($column = 0; $arr[$column] != 'G'; $column++) {                          $val = $sheet->getCellByColumnAndRow($column, $row)->getValue();                          $row_arr[] = $val;                    }                    $res_arr[] = $row_arr;                }                $result = [];                foreach($res_arr as $k => $v){                    // $result[$k]['id'] = $v[0];                    $result[$k]['title'] = $v[1];                    $result[$k]['option'] = $v[2];                    $result[$k]['A'] = $v[3];                    $result[$k]['B'] = $v[4];                    $result[$k]['C'] = $v[5];                 }                    $success = [];                    $error = [];                    Db::startTrans();                try{                    foreach ($result as $key => $v) {                        $res = db('staff_info')->lock(true)->insert($v);                        if($res){array_push($success,$v);                        }else{array_push($error,$v);                        }                    }           Db::commit();                }catch(\Exception $e){                   Db::rollback();                }                $data = [                    'success'=>$success,                    'error'=>$error                ];                $this->success('一共'.count($result).'条数据,成功导入'.count($success).'条数据,导入失败'.count($error).'条数据',$data);                  }             }

来源地址:https://blog.csdn.net/nh2r1114/article/details/129367094

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯