经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
thinkphp5.0数据导出excel表格
来源:cnblogs  作者:张喜龙  时间:2019/10/14 10:04:24  对本文有异议

第一步、创建Model类文件(名称自定)

第二步、在类中写入以下代码

  1. <?php

    namespace Admin\admin\model;

    use think\Model;

    class MarkModel extends Model{

    //导出预约信息
    public function outExcel1(){

    $del=@implode(",",$_POST["del"]);

    if($del!=""){

    $art = db('messga');

    $where['id'] = array('in',$del);

    $rs = $art->where($where)->order('id desc')->select();

    foreach ($rs as $v){
    $excdata[]=array(

    'id'=>$v["id"],

    'names'=>$v["names"],

    'phone'=>$v["phone"],

    'email'=>$v["email"],

    'cid'=>$v["cid"],

    'companynames'=>$v["companynames"],

    'tel'=>$v["tel"],

    'num'=>$v["num"],

    'p_names'=>$v["p_names"],

    'dates'=>date('Y-m-d H:i:s',$v["dates"])

    );
    }


    }else{

    $art = db('message');

    $rs = $art->order('id desc')->select();

    foreach($rs as $v){
    $excdata[]=array(

    'id'=>$v["id"],

    'names'=>$v["names"],


    'phone'=>$v["phone"],

    'email'=>$v["email"],

    'cid'=>$v["cid"],

    'companynames'=>$v["companynames"],

    'tel'=>$v["tel"],


    'num'=>$v["num"],

    'p_names'=>$v["p_names"],

    'dates'=>date('Y-m-d H:i:s',$v["dates"])

    );
    }

    //echo "<script>alert ('请选中要导出的数据'); history.go(-1);</script>";

    }


        //数组信息根据自己项目而定
    $expCellName=array(

    array('id','序号'),

    array('names','姓名'),

    array('phone','电话'),

    array('email','邮箱'),

    array('companynames','公司名称'),

    array('num','人数'),

    array('cid','公开课'),

    array('p_names','职务'),

    array('tel','座机'),

    array('dates','提交日期')

    );

    $this->exportExcel('留言信息',$expCellName,$excdata);

    exit;


    }




    /**

    * 导出操作

    * 参数1:$expTitle :导出excel的标题

    * 参数2:$expCellName:导出到表格中需要显示每一列的标题 如下:

    * $expCellName=array(

    * 参数三:$expTableData : 需要导出的表中数据

    *

    *

    */

    public function exportExcel($expTitle='', $expCellName, $expTableData){

         //引入PHPExcell类
    import('PHPExcel.Classes.PHPExcel');

    import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');

    $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);

    //文件名称

    $fileName = $expTitle.date('_YmdHis');

    //or $xlsTitle 文件名称可根据自己情况设定

    $cellNum = count($expCellName);

    $dataNum = count($expTableData);

    vendor("phpoffice.phpexcel.Classes.PHPExcel");

    $objPHPExcel = new \PHPExcel();

    $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');

    // 设置水平垂直居中

    $objPHPExcel->getActiveSheet()->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $objPHPExcel->getActiveSheet()->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

    //设置excel表格 从 A1 到 AB1 这一行的字体加粗

    $objPHPExcel->getActiveSheet()->getStyle('A1:AB1')->getFont()->setBold(true);

    // 设置某一行的高度 1.2.3

    $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(20);



    //J 、 K列为文本 (输入什么就是什么,不会随着excel系统格式变化)

    // $objPHPExcel->getActiveSheet()->getStyle('J')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);

    // $objPHPExcel->getActiveSheet()->getStyle('K')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);

    //设置某一列的宽度

    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);

    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);

    $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);

    $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(45);

    $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(105);

    $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);

    $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20);

    $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20);

    $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(15);

    $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(15);

    $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(20);

    // 设置某一行的高度 1.2.3

    $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(20);

    // 隐藏某一列

    //$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setVisible(false);

    //$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setVisible(false);

    //$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false);

    //$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setVisible(false);

    //合并单元格

    // $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');

    // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));

    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');

    $objWriter->save('php://output');

    exit;

    }



    }

原文链接:http://www.cnblogs.com/zhangxilong/p/11662931.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号