zoukankan      html  css  js  c++  java
  • PHP导出生成Excel文件

    PHP导出生成Excel首先需要下载安装office扩展

    可以自行下载,也可以通过composer下载安装

    个人比较建议后者

    代码很简单  不废话直接上代码


    /**
    * @param $file_name String 文件名称
    * @param $title String 标题
    * @param $order String 中文的表格序以逗号方式连接
    * @param $data array 数据集
    * @param $data_order String 数据集合key以逗号的方式连接
    */
    function export($file_name,$title,$order,$data,$data_order) {

    $objPHPExcel = new PHPExcel();
    $letter = array();
    for($j = 65;$j < 91;$j++) {
    $letter[] = chr($j);
    }
    /**
    * setCreator 作者
    * setTitle 标题
    * setSubject 主题
    * setDescription 备注
    * setKeywords 关键字
    * setCategory 类别
    */
    $objPHPExcel->getProperties()->setCreator("alading")
    ->setLastModifiedBy("alading")
    ->setTitle("Office 2007 XLSX")
    ->setSubject("Office 2007 XLSX")
    ->setDescription("Office 2007 XLSX")
    ->setKeywords("office 2007")
    ->setCategory("alading file");

    $order_arr = explode(',',$order);

    foreach ($order_arr as $key => $value) {
    // 设置宽
    $objPHPExcel->getActiveSheet()->getColumnDimension($letter[$key])->setWidth(20);
    // 设置水平居中
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle($letter[$key])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    }

    // 设置行高度
    $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(22);
    $objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);
    $data_order = explode(',',$data_order);
    //设置最后的样式
    end($data_order);
    $end_key = ':' . $letter[key($data_order)];

    // 字体和样式
    $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
    $objPHPExcel->getActiveSheet()->getStyle('A2'.$end_key.'2')->getFont()->setBold(true);
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    $objPHPExcel->getActiveSheet()->getStyle('A2'.$end_key.'2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('A2'.$end_key.'2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

    // 合并
    $objPHPExcel->getActiveSheet()->mergeCells('A1'.$end_key.'1');

    // 表头
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $title);
    foreach ($order_arr as $k => $v) {
    $objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue($letter[$k].'2', $v);
    }

    for ($i = 0, $len = count($data); $i < $len; $i++) {
    foreach ($data_order as $da => $vo) {
    $objPHPExcel->getActiveSheet(0)->setCellValue($letter[$da]. ($i + 3), $data[$i][$vo]);
    }
    $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . $end_key . ($i + 3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . $end_key . ($i + 3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
    $objPHPExcel->getActiveSheet()->getRowDimension($i + 3)->setRowHeight(16);
    }
    // 重命名表名称
    $objPHPExcel->getActiveSheet()->setTitle($title);
    // 表索引设置为第一个表
    $objPHPExcel->setActiveSheetIndex(0);
    // 输出
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="' . $file_name . '.xls"');
    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

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

  • 相关阅读:
    Spring核心概念
    机器学习第二次作业
    机器学习第一次作业
    软工实践个人总结
    第04组 Beta版本演示
    第04组 Beta冲刺(5/5)
    第04组 Beta冲刺(4/5)
    第04组 Beta冲刺(3/5)
    第04组 Beta冲刺(2/5)
    第04组 Beta冲刺(1/5)
  • 原文地址:https://www.cnblogs.com/wlsphper/p/6902330.html
Copyright © 2011-2022 走看看