Tp使用phpexcel导入导出excel

1.将phpexcel作为第三方类库放入到TP框架当中如下的位置:

                                   

2.首先是excel导入数据库的操作,首先在页面上添加一个导入文件的按钮,

<form method='post'action='/Admin/User/uploadExcelFile/' enctype='multipart/form-data' style='float:left'><input type='submit' value='导入' style='float:left;'/><input type='file' name='file_stu' style='float:left;font-size: 16px' /></form>


3.在控制器里面进行操作




注:今天我导入的时候发现一个问题,就是导入的列数一定要在z之前,不然循环的时候数列数是会出错的。

这个是项目中的具体代码。

1)首先引入phpexcel.

2)  上传excel文件。


代码:

//Upload Excel File 导入数据库
    public function  uploadExcelFile (){
        require(THINK_PATH.'Library/Vendor/PHPExcels/PHPExcel.php');//引入PHP EXCEL类
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     3145728 ;// 设置附件上传大小
        $upload->exts      =     array('xls', 'xlsx');// 设置附件上传类型
        $upload->rootPath  =     'Public/UploadsExcel/'; // 设置附件上传根目录
        $upload->savePath  =     ''; // 设置附件上传(子)目录
        $upload->saveRule = uniqid;
        // 上传文件
        $info   =   $upload->upload($_FILES);
        /*判别是不是.xls文件,判别是不是excel文件*/
        if($info){
            $filePath = 'Public/'.'UploadsExcel/'.$info['file_stu']['savepath'].$info['file_stu']['savename'];//Excel文件路径
            $sheet = 0;//默认表格
            if(empty($filePath) or !file_exists($filePath)){die('file not exists');}
            $PHPReader = new \PHPExcel_Reader_Excel2007();        //建立reader对象
            if(!$PHPReader->canRead($filePath)){
                $PHPReader = new \PHPExcel_Reader_Excel5();
                if(!$PHPReader->canRead($filePath)){
                    echo 'no Excel';
                    return ;
                }
            }
            $PHPExcel = $PHPReader->load($filePath);        //建立excel对象
            $currentSheet = $PHPExcel->getSheet($sheet);        //**读取excel文件中的指定工作表*/
            $allColumn = $currentSheet->getHighestColumn();        //**取得最大的列号*/
            $allRow = $currentSheet->getHighestRow();        //**取得一共有多少行*/
            $excelData = array();
            for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){        //循环读取每个单元格的内容。注意行从1开始,列从A开始
                for($colIndex='A';$colIndex<=$allColumn;$colIndex++){
                    $addr = $colIndex.$rowIndex;
                    $cell = $currentSheet->getCell($addr)->getValue();
                    if($cell instanceof \PHPExcel_RichText){ //富文本转换字符串
                        $cell = $cell->__toString();
                    }
                    $excelData[$rowIndex][$colIndex] = $cell;
                }
            }
            $invitationcodeModel = M('maiclub_invitationcode');
            foreach($excelData as $v ){
                $data['invitation_code'] = $v['B'];
                $data['id'] = null;
                $data['status'] = 0;
                $data['create_time'] = time();
                $result = $invitationcodeModel->data($data)->add();
                $insertId = $result;
            }
            if($insertId){
                echo "<script>alert('插入成功');location.href='/Admin/User/invitationLists';</script>";
            }else{
                echo "<script>alert('插入失败,请检查文件是否按照要求的格式');</script>";
            }
        }else{
            echo "<script>alert('上传失败');location.href='/Admin/User/invitationLists';</script>";exit;
        }


    }




3.excel的导出

代码:

 //导出Excel文件
    public function excelExport(){
        require_once(THINK_PATH.'Library/Vendor/PHPExcels/PHPExcel.php');//引入PHP EXCEL类
        require_once(THINK_PATH.'Library/Vendor/PHPExcels/IOFactory.php');//引入PHP EXCEL类
        $objPHPExcel = new \PHPExcel();
        $invitationcodeModel = M('maiclub_invitationcode');
        $invitationcodeList=$invitationcodeModel->select();
        //设置excel列名
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1','id');
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1','invitation_code');
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1','status');
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D1','create_time');
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('E1','modify_time');
        //把数据循环写入excel中
        foreach($invitationcodeList as $key => $value){
            $key+=2;
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$key,$value['id']);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$key,$value['invitation_code']);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$key,$value['status']);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D'.$key,date('Y-m-d H:i:s',$value['create_time']));
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('E'.$key,date('Y-m-d H:i:s',$value['modify_time']));
        }
        // Rename worksheet
        $objPHPExcel->getActiveSheet()->setTitle('邀请码');
        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="邀请码列表.xls"');
        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($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值