ThinkPHP5.1使用PHPExcel进行数据的导入导出

本文已在本人博客https://www.nsxsg.com/archives/192首发

ThinkPHP5.1使用PHPExcel进行数据的导入导出

安装PHPExcel

  1. 进入项目目录,使用composer安装PHPExcel
composer require phpoffice/phpexcel

image

导入数据

  1. 准备一个含有数据的Excel表格,表头和数据表中的表字段相对应

image

  1. 在ThinkPHP中引入PHPExcel类库

image

  1. 编写导入的PHP代码
    /**
     * 批量导入管理员model
     * @param array 导入的数据
     * @return 返回成功或者失败信息
     */
    public function inputAdmins()
    {
        // 实例化类库
        $obj_phpexcel = new \PHPExcel();
        $objReader = \PHPExcel_IOFactory::createReader('Excel5');
        // 接收文件
        $inputdata = $_FILES;
        // 获取并处理数据
        $objData = $objReader->load($inputdata['file']['tmp_name'], $encode = 'utf-8');
        $excel_array=$objData->getsheet(0)->toArray();
        unset($excel_array[0]);
        $num = 0;
        $insertData = '';
        foreach ($excel_array as $key => $value) {
            $insertData[$num]['adminname'] = $value[1];
            $insertData[$num]['status'] = $value[2];
            $insertData[$num]['icon'] = $value[3];
            $insertData[$num]['password'] = $value[4];
            $insertData[$num]['uptime'] = $value[5];
            $insertData[$num]['addtime'] = $value[6];
            $insertData[$num]['delete'] = $value[7];
            $num++;
        }
        // 添加数据
        $user = new Apiadmins;
        $res = $user->saveAll($insertData);
        if ($res) {
            return $this -> cbMsg(true, '导入成功!');
        } else {
            return $this -> cbMsg(false, '导入失败!');
        }
    }

image

导出数据

  1. 编写导出的PHP代码
    /**
     * 批量导出管理员model
     * @param string $fileName 导出文件名
     * @param array $headArr 表头
     * @return 导出Excel表格
     */
    public function outputAdmins($fileName = '文件名', $headArr = ['id','adminname','status','icon','password','uptime','addtim','delete'])
    {
        $fileName .= "_" . date("Ymd_His", time()) . ".xls";
        $objPHPExcel = new \PHPExcel();
        // Set document properties (设置文档属性)
        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
                                    ->setLastModifiedBy("Maarten Balliauw")
                                    ->setTitle("Office 2007 XLSX Test Document")
                                    ->setSubject("Office 2007 XLSX Test Document")
                                    ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                                    ->setKeywords("office 2007 openxml php")
                                    ->setCategory("Test result file");
        // 设置头信息
        $objPHPExcel->setActiveSheetIndex(0);
        $key = ord('A');
        foreach ($headArr as $v) {
            $colum = chr($key);
            $objPHPExcel->getActiveSheet()->setCellValue($colum . '1', $v);
            $key += 1;
        }
        // 获取管理员全部数据
        $data = Apiadmins::all();
        $data = $data->toArray();
        $column = 2;
        foreach ($data as $key => $rows) { // 行写入
            $span = ord("A");
            foreach ($data[$key] as $keyName => $value) { // 列写入
                $objPHPExcel->getActiveSheet()->setCellValue(chr($span) . $column, $value);
                $span++;
            }
            $column++;
        }
        $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save(str_replace('.php', '.xls', Env::get('runtime_path').$fileName));
        return $this -> cbMsg(true, '导出成功,请去目录:'.Env::get('runtime_path').' 查看!文件:'.$fileName);
    }

image

  1. 导出测试

image

image

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值