• ThinkPHP5.0引用PHPExcel插件,在页面中导出数据库数据


    一、ThinkPHP5.0框架的extend文件夹下引入PHPExcel插件

    二、公共类下的函数:

    /**
    * 将数据 导出为 xls 格式 成功
    * @param $headArr //表头
    * @param $data //查询数据
    * @param $filename //下载文件名
    * 示例:
    * $data = db('message')->whereIn('id', $ids)->select();
    * $field = array(
    * 'A' => array('id', '唯一标识符'),
    * 'B' => array('title', '主题'),
    * 'C' => array('phonenum', '电话'),
    * 'D' => array('addtime', '时间'),
    * );
    * phpExcel($field, $data, date('Y-m-d'));
    */
    function phpExcel($headArr, $data, $filename)
    {
    //引入文件
    require_once(EXTEND_PATH . 'PHPExcel/Classes/PHPExcel.php');
    //实例化
    $objPHPExcel = new PHPExcel();
    $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
    foreach ($data as $key => $value) {
    foreach ($headArr as $k => $v) {

    //设置报表列头
    if ($key == 0) {
    $objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);
    }

    //添加表格内容
    $i = $key + 2; //表格是从2开始的
    $objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);


    /**
    * 表格相关设置
    */

    //设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
    //被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
    //都按原始内容全部显示出来
    $objPHPExcel->getActiveSheet()->getStyle($k.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);

    //设置单元格宽度自适应文本长度
    $objPHPExcel->getActiveSheet()->getColumnDimension($k)->setAutoSize(true);
    //水平居中
    // $objPHPExcel->getActiveSheet()->getStyle($k . $i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    //垂直居中
    // $objPHPExcel->getActiveSheet()->getStyle($k . $i)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    //文本自动换行
    $objPHPExcel->getActiveSheet()->getStyle($k . $i)->getAlignment()->setWrapText(true);
    }
    }

    //给客户端发送 下载格式为xls 的 头信息
        header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");;
    header('Content-Disposition:attachment;filename=' . $filename . '.xls');
    header("Content-Transfer-Encoding:binary");
    $objWriter->save('php://output');
    }

    三、在控制器中调用函数,下载成文件

  • 相关阅读:
    java09 队列Queue与Deque
    java08 Set
    java07 map
    SNMP学习
    NPM
    windows主机资源Snmp OIDs CPU, Memory, Disk等
    servlet3.0 @webfilter 过滤顺序
    snmp v3的安全配置 snmp认证与加密配置(53)
    CentOS 7.2 (mini) 里iptables防火墙怎么关闭?
    ORA-00845 MEMORY_TARGET not supported on this system 的解决
  • 原文地址:https://www.cnblogs.com/dandanyoudu/p/11857890.html
Copyright © 2020-2023  润新知