tp3.2导出excel

写项目过程中,需要使用excel导出功能(暂未有导入),特此以此博客记录,也是在之前别人写的基础上复制粘贴
HTML部分:$formget.keyword为搜索关键字

    控制器使用$_GET$_POST获取搜索关键字
    $this->assign ( "formget", array_merge ( $_GET, $_POST ) );


    <form class="well form-search" method="post" action="{:U('AdminCollect/index')}">
            关键字:
            <input type="text" name="keyword" style="width: 200px;" value="{$formget.keyword|default=''}" placeholder="请输入关键字...">
            时间:
            <input type="text" name="start_time" class="js-datetime" value="{$formget.start_time|default=''}" style="width: 120px;" autocomplete="off">-
            <input type="text" class="js-datetime" name="end_time" value="{$formget.end_time|default=''}" style="width: 120px;" autocomplete="off"> &nbsp; &nbsp;
            <input type="submit" class="btn btn-primary" value="搜索" />
            <a class="btn btn-danger" href="{:U('AdminCollect/index')}">清空</a>
     </form>
    <form class="form-search pull-right" method="post"    action="{:U('AdminCollect/expExcel')}">
           <input type="hidden" name="keyword" value="{$formget.keyword|default=''}">
           <input type="submit" class="btn btn-mini btn-primary" value="导出到EXCEL" />    
    </form>

Controller部分


        public function expExcel() {
        $xlsName = "用户收藏";
        $xlsCell = array (
            array ( 'id', '序号' ),
            array ( 'activity_title', '活动名称' ),
            array ( 'shop_name', '商家名称' ),
            array ( 'collect_time', '收藏时间' ),
        );
        $field = 'id,activity_title,shop_name,collect_time';
        $shop_name=I('request.keyword');
        if(!empty($shop_name)){
            $where['activity_title|shop_name']=array('like',"%$shop_name%");
        }
        $where['status']=array('eq',1);
        // 导出所有的内容
        $xlsData = $this->collect_model
            ->where($where)
            ->Field ($field)
            ->order(array("id" => "DESC"))
            ->select();
        foreach ( $xlsData as $k => $v ) {
            $xlsData[$k]['collect_time']=date('Y-m-d H:i:s',$v['collect_time']);
        }
        $this->exportExcel ( $xlsName, $xlsCell, $xlsData );
    }

    private function exportExcel($expTitle, $expCellName, $expTableData) {
        $xlsTitle = iconv ( 'utf-8', 'gb2312', $expTitle ); // 文件名称
        $fileName = $xlsTitle.date ( 'YmdHis' );
        $cellNum = count ( $expCellName );
        $dataNum = count ( $expTableData );
        //vendor中放入PHPExcel类
        vendor ( "PHPExcel.PHPExcel" );

        $objPHPExcel = new \PHPExcel ();

        $cellName = array (
            'A', 'B', 'C', 'D'
        );
        $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'A' )->setWidth ( 10 );
        $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'B' )->setWidth ( 50 );
        $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'C' )->setWidth ( 30 );
        $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'D' )->setWidth ( 20 );

        for($i = 0; $i < $cellNum; $i ++) {
            $objPHPExcel->setActiveSheetIndex ( 0 )->setCellValue ( $cellName [$i] . '1', $expCellName [$i] [1] );
        }
        // Miscellaneous glyphs, UTF-8
        for($i = 0; $i < $dataNum; $i ++) {
            for($j = 0; $j < $cellNum; $j ++) {
                $objPHPExcel->getActiveSheet ( 0 )->setCellValue ( $cellName [$j] . ($i + 2), $expTableData [$i] [$expCellName [$j] [0]] );
            }
        }
        header ( 'pragma:public' );
        header ( 'Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"' );
        header ( "Content-Disposition:attachment;filename=$fileName.xls" ); // attachment新窗口打印inline本窗口打印
        $objWriter = \PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' ); // Excel5为xls格式,excel2007为xlsx格式
        $objWriter->save ( 'php://output' );
        exit ();
    }
   

猜你喜欢

转载自blog.csdn.net/weixin_42167468/article/details/84645924