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. python零基础能学吗 知乎-Python零基础学习能学好吗?老男孩Python面授班
  2. EelemntUI中e-form表单校验的使用以及表单校验的规则
  3. osgi 模块化_OSGI –模块化您的应用程序
  4. 计算机系统启动的加点顺序是,操作系统引导探究
  5. 一文彻底明白linux中的selinux到底是什么
  6. [other] 代码量代码复杂度统计-lizard
  7. 微信网页支付小白指南-域内浏览器支付 + 外部浏览器支付
  8. 寻找因数——算法简化
  9. Android手机写Java代码的软件
  10. 神经网络拓扑图怎么画,神经网络和图神经网络
  11. 【NCRE】---拼接SQL语句(Case....When语句)
  12. 三菱FX5U传送指令
  13. Field communityMapper in com.estate.service.impl.CommunityServiceImpl required a bean of type ‘
  14. EigenGame:将主成份分析(PCA)作为一个博弈游戏
  15. Java基于opencv—矫正图像
  16. python学习之给小学生数学运算题(混合加减乘除法)
  17. 【python】分析静态网页内容与获取
  18. CSS元素的显示和隐藏
  19. 企业为何要挖掘专利和专利布局,如何做?
  20. Oracle 11g自带的sqldeveloper.exe打不开问题

热门文章

  1. 运输问题系数矩阵matlab,基于MATLAB的运输问题求解方法.pdf
  2. PageOffice实现文件在线安全预览——禁止编辑、下载、复制等
  3. mybatis resultMap映射详解
  4. siki学院API补充的笔记
  5. 带你看看GeoJSON是什么!
  6. [Unity3D]Unity3D游戏开发之仿仙剑奇侠传仙灵岛机关的实现
  7. 企业微信小助理自动回复
  8. 小机、数据库、存储选型应该注意的几个事项(摘自ORACLE高可用环境-陈吉平)
  9. 2018软件测试从业者精进指南 。
  10. 885计算机科学与技术专业基础综合,2017年北京理工大学软件学院885软件工程专业基础综合考研题库...