namespace app\excel;

use PHPExcel;

use PHPExcel_IOFactory;

class ExcelMultiSheetHelper

{

/**

* 多表单数据导出

* @param $data

*  $data = [

* [

* 'title' => 'sheet1',

* 'list' =>

* [

* ['name' => 'sheet1_line1_name', 'item' => 'sheet1_line1_item'],

* ['name' => 'sheet1_line2_name', 'item' => 'sheet1_line1_item']

* ],

* 'column' =>

* [

* 'A' => ['title' => 'title_name', 'field' => 'name'],

* 'B' => ['title' => 'title_item', 'field' => 'item']

* ],

* ],

* [

* 'title' => 'sheet2',

* 'list' =>  [

* ['name' => 'sheet2_line1_name', 'item' => 'sheet2_line1_item'],

* ['name' => 'sheet2_line2_name', 'item' => 'sheet2_line1_item']

* ],

* 'column' =>

* [

* 'A' => ['title' => 'title_name', 'field' => 'name'],

* 'B' => ['title' => 'title_item', 'field' => 'item']

* ],

* ],

* ];

* @param string $fileName

*/

public static function exportToExcel($data, $fileName = '数据导出')

{

$objPHPExcel = new PHPExcel(); //实例化Excel类

foreach ($data as $key => $value) {

$objPHPExcel->createSheet($key);

$objPHPExcel->setActiveSheetIndex($key);

$activeSheet = $objPHPExcel->getactivesheet();

$activeSheet->setTitle($value['title']);

$column = $value['column'];

$list = $value['list'];

foreach ($list as $kk => $vv) {

$line = $kk + 2;

foreach ($column as $kkk => $vvv) {

$title = $vvv['title'];

$field = $vvv['field'];

$activeSheet->getColumnDimension($kkk)->setWidth(15); //设置单元格宽

$fieldData = !empty($vv[$field]) ? $vv[$field] : '';

$activeSheet->getStyle($kkk . 1)->getFont()->setName('宋体')->setBold(true); //字体加粗; //字体

$activeSheet->setcellvalue($kkk . 1, $title);//第A列 第1行,标题

$activeSheet->setcellvalue($kkk . $line, $fieldData);//第A列 第$k行

}

}

}

if ($objPHPExcel->getSheetCount() > 1) {

$objPHPExcel->removeSheetByIndex($objPHPExcel->getSheetCount() - 1); //删除模板sheet

}

//最后通过浏览器输出

static:: responseExcelFile($fileName, $objPHPExcel, 'Excel5');

exit;

}

/**

* 最后通过浏览器输出

* @param $fileName

* @param $objPHPExcel

* @param string $excelVersion

*/

public static function responseExcelFile($fileName, $objPHPExcel, $excelVersion = 'Excel5')

{

if (static:: isIE()) {//解决文件名含中文时下载乱码问题。测试浏览器:IE8\IE11\Chrome41\Firefox38

$fileName = urlencode($fileName);

}

$fileName .= $excelVersion === 'Excel5' ? '.xls' : '.xlsx';

ob_end_clean();

ob_start();

//添加fileDownload cookie便于jquery.fileDownload.js判断下载状态

header('Set-Cookie: fileDownload=true; path=/');

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment;filename="' . $fileName . '"');

header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $excelVersion);

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

}

/**

* 判断当前请求浏览器是否IE

* @return bool

*/

private static function isIE()

{

$u_agent = $_SERVER['HTTP_USER_AGENT'];

return (preg_match('/MSIE/i', $u_agent) || preg_match('/Trident/i', $u_agent)) && !preg_match('/Opera/i', $u_agent);

}

}

参考博客

php excel多,PHPExcel多表单数据导出相关推荐

  1. php表单生成Excel,PHPExcel多表单数据导出

    namespace app\excel; use PHPExcel; use PHPExcel_IOFactory; class ExcelMultiSheetHelper { /** * 多表单数据 ...

  2. php自定义表单怎么导入excel,织梦dedeCMS将自定义表单数据导入到excel文档实现方法...

    这篇文章主要为大家详细介绍了织梦dedeCMS将自定义表单数据导入到excel文档实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 织梦的自定义表单适用起 ...

  3. PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】...

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个是<PoiDemo[Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)]>的扩展,上一篇是根 ...

  4. android 生成多个表单,Android根据word模板文档将表单数据生成word文档的方案整理...

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 尝试的方案包括以下几种: freemarker 只能在java项目上运行,无法在Android项目上运行: poi 解析doc文件可 ...

  5. python读取多个excel表_python 实现读取一个excel多个sheet表并合并的方法

    python 实现读取一个excel多个sheet表并合并的方法 如下所示: import xlrd import pandas as pd from pandas import DataFrame ...

  6. php将表单数据存入数据库,php将表单中数据传入到数据库

    无标题文档//创建表单 姓名 header("Content-type:text/html;charset=utf-8"); if(isset($_POST['submit'])) ...

  7. CI框架导出多个mysql查询结果到excel多个sheet表 各大量数据导入(数以万计)

    mysql表结构 导出各班成绩到不同sheet表 public function testPHPExcel(){set_time_limit(0);//防止超时ini_set("memory ...

  8. ajax异步提交 java_jquery ajax异步提交表单数据的方法

    使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的: 处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据 ...

  9. 数据验证html,JavaScript 表单数据验证

    JavaScript 表单 HTML 表单验证可以通过 JavaScript 来完成. HTML 表单验证也可以通过浏览器来自动完成. 如果表单字段 (fname) 的值为空, required 属性 ...

最新文章

  1. Java中public,private,protected以及default的访问权限区别
  2. day31 Pyhton 面向对象的基础 三大特性
  3. 树哈希判断同构无根同构问题转有根同构问题
  4. activiti5.22 springboot 流程引擎 实战全过程
  5. (ssh整合web导出excel)在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载...
  6. Java Virtual Machine报错:A Java Exception has occured
  7. php 第二次出现位置,php – Preg Replace – 替换匹配的第二次出现
  8. CodeIgniter典型的表单提交验证代码
  9. 囚徒困境(博弈论的诡计)
  10. 投标文件模板 | 信息化智慧校园项目投标方案 | word版
  11. Qwins系统工具v1.3.0绿色版
  12. python 查看文件夹大小
  13. vue实现前端页面缓存
  14. 读论文,第十六天:FrownOnError: Interrupting Responses from Smart Speakers by Facial Expressions
  15. ParticleDesigner 粒子编辑器使用
  16. [WPF] WPF浏览器程序:如何发布并解决不信任程序问题
  17. D3.js 绘制立体柱状图
  18. ubuntu18纯净系统个人配置
  19. Windows:kibana 源码本地编译--v6.4.1
  20. 企业信息化不可缺少之方正OA

热门文章

  1. Java基于springboot+vue的电子相册管理系统 前后端分离node
  2. 如何做好“全面”预算管理?提升企业综合竞争力
  3. 云计算之 PaaS详解
  4. 【Linux】/lib64/libstdc++.so.6: version `CXXABI_1.3.9‘ not found
  5. Maven中央仓库连接不上的问题解决
  6. 如何读/写论文???
  7. checksum命令 linux_数字签名及 Checksum 校验和
  8. geojson 包含道路_GeoJSON介绍
  9. 一个关于C语言程序指针的用法(其中之一·)
  10. c语言logout_用C语言编写一个Linux下的简单shell程序