【PHP】Excel表格导入导出

来源:互联网 发布:天龙八部好看发色数据 编辑:程序博客网 时间:2024/04/28 10:53

在我们的管理系统开发中经常需要使用到表格导入导出的功能,今天我们就使用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
原创粉丝点击