【PHP】Excel表格导入导出

在我们的管理系统开发中经常需要使用到表格导入导出的功能,今天我们就使用phpexcel这个类库来实现我们需要的表格导入导出功能

什么是PHPExcel?

是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格

本案例是在YII2.0框架中来使用phpexcel

首先我们需要将Classes目录下的文件拷贝到我们YII框架根目录下新建一个文件夹excel里


准备工作完成之后进入令人激动的开发阶段(灰常简单的~)

我们先来做导出

require dirname(dirname(__FILE__)).'/excel/PHPExcel.php';

class AController extends \yii\web\Controller
{
    public function actionOutput()
    {
        $this->layout = "layout1";//指定模板

        $objPHPExcel = new \PHPExcel(); // 实例化PHPExcel类, 等同于在桌面上新建一个excel,这里需要前置加反斜扛
        for ($i = 1; $i <= 3; $i ++) {//这里需要创建多少个sheet就让i小于多少
            if ($i > 1) {
                $objPHPExcel->createSheet(); // 创建新的内置表
            }
            $objPHPExcel->setActiveSheetIndex($i - 1); // 把新创建的sheet设定为当前活动sheet
            $objSheet = $objPHPExcel->getActiveSheet(); // 获取当前活动sheet
            $objSheet->setTitle($i . "sheet".$i); // 给当前活动sheet起个名称
            $model = Company::find();
            $count = $model->count();
            $pageSize = Yii::$app->params['pageSize']['order'];
            $pager = new Pagination([
                'totalCount' => $count,
                'pageSize' => $pageSize
            ]);
            $data = $model->offset($pager->offset)
                ->limit($pager->limit)
                ->all(); // 查询所有公司的信息
            
            $objSheet->setCellValue("A1", "id")
                ->setCellValue("B1", "电话"); //表头内容
            $j = 2;
            foreach ($data as $key => $val) {
                $objSheet->setCellValue("A" . $j, $val['companyid'])
                    ->setCellValue("B" . $j, $val['phone']);// 填充数据
                $j ++;
            }
        }
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); // 生成excel文件
        // $objWriter->save($dir."/export_1.xls");//保存文件
        header('Content-Type: application/vnd.ms-excel'); // 告诉浏览器将要输出excel03文件
        header('Content-Disposition: attachment;filename="' . 'browser_excel03.xls' . '"'); // 告诉浏览器将输出文件的名称
        header('Cache-Control: max-age=0'); // 禁止缓存
        $objWriter->save("php://output");//输出
        return $this->render('list', ['pager' => $pager, 'orders' => $data]);
    }
}


然后是导入Excel

require dirname(dirname(__FILE__)).'/excel/PHPExcel.php';

class AController extends \yii\web\Controller
{

    public function actionInput()
    {
        $dir = dirname(__FILE__); // 找到当前脚本所在路径
        $filename = $_FILES['excel']['tmp_name'];
        $fileType = \PHPExcel_IOFactory::identify($filename); // 自动获取文件的类型提供给phpexcel用
        $objReader = \PHPExcel_IOFactory::createReader($fileType); // 获取文件读取操作对象
        // $objReader->setLoadSheetsOnly($sheetName);//只加载指定的sheet
        $objPHPExcel = $objReader->load($filename); // 加载文件
        foreach ($objPHPExcel->getWorksheetIterator() as $sheet) { // 循环取sheet
            foreach ($sheet->getRowIterator() as $row) { // 逐行处理
                if ($row->getRowIndex() < 2) {
                    continue;
                }
                $i = 0;
                $arr = array();
                foreach ($row->getCellIterator() as $cell) { // 逐列读取
                    $data = $cell->getValue(); // 获取单元格数据
                    $arr[$i] = $data;
                    $i++;
                }
                if($arr[0] == '' && $arr[1] == ''){
                    return $this->render('index');//读到空的单元格停止读取动作
                }
                var_dump($arr);//打印出读到的数据
                //保存到数据库
                $sql = "insert into company values (null,'$arr[1]')";
                Yii::$app->db->createCommand($sql)->execute();
                Yii::$app->session->setFlash('info', '已成功导入数据');
            }
            return $this->render('index');
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值