项目介绍

PHPExcel-Helper是什么?

PHPExcel辅助开发类,帮助开发者快速创建各类excel。

github

PHPExcel-Helper存在的意义?

官方phpexcel库功能全面,但其调用有些繁琐,一个简单的表格导出可能需要写上几十行代码,本库将phpexcel中常用的方法配置进行封装,并添加了一些常用的业务支持,通常几行代码即可实现一个导出功能。

在实际开发中很容易的可以将数据库中查询出来的列表配置导出。

安装教程

使用 composer 安装,依赖 phpexcel

  1. $ composer require whalephp/phpexcel-helper

Demo

demo 1:简单表格
  1. <?php
  2. include '../vendor/autoload.php';
  3. use whalephp\tool\PHPExcelHelper;
  4. $ToolExcel = new PHPExcelHelper();
  5. $list = array(
  6. array('id'=>1,'name'=>'a'),
  7. array('id'=>2,'name'=>'b'),
  8. array('id'=>3,'name'=>'c'),
  9. array('id'=>4,'name'=>'c'),
  10. );
  11. $key = array(
  12. 'id' => '编号',
  13. 'name' => '姓名',
  14. );
  15. $ToolExcel->exportExcelSimp('简版测试',$key,$list);

demo 2:跨行跨列表格
  1. <?php
  2. include '../vendor/autoload.php';
  3. use whalephp\tool\PHPExcelHelper;
  4. $ToolExcel = new PHPExcelHelper();
  5. $data = array(
  6. 'file_name' => '测试-跨行跨列',
  7. 'sheetInfo' => array(
  8. 'sheetIndex' => 0,
  9. 'sheetTitle' => '订单汇总',
  10. ),
  11. 'startCell' => array( //开始写入位置
  12. 'row'=>1,
  13. 'col'=>1
  14. ),
  15. 'cellData' => array(
  16. array(
  17. array(
  18. 'val' => 'A1',
  19. 'rowspan' => 2, //跨行数
  20. 'colspan' => 2, //跨列数
  21. 'remarks' => '备注1',
  22. ),
  23. array(
  24. 'val' => 'B1', //
  25. 'rowspan' => 2, //跨行数
  26. 'colspan' => 2, //跨行数
  27. ),
  28. array(
  29. 'val' => 'C1',
  30. 'colspan' => 2,
  31. ),
  32. array(
  33. 'val' => 'D1', //
  34. 'colspan' => 2,
  35. ),
  36. array(
  37. 'val' => 'A1',
  38. 'rowspan' => 2, //跨行数
  39. 'colspan' => 2, //跨列数
  40. 'remarks' => '备注1',
  41. ),
  42. array(
  43. 'val' => 'C1',
  44. 'colspan' => 2,
  45. ),
  46. array(
  47. 'val' => 'D1', //
  48. 'colspan' => 2,
  49. ),
  50. ),
  51. array(
  52. array(
  53. 'val' => '1',
  54. ),
  55. array(
  56. 'val' => '2',
  57. ),
  58. array(
  59. 'val' => '3',
  60. ),
  61. array(
  62. 'val' => '4',
  63. ),
  64. array(
  65. 'val' => '5',
  66. ),
  67. array(
  68. 'val' => '6',
  69. ),
  70. ),
  71. array(
  72. array(
  73. 'val' => 'a',
  74. ),
  75. array(
  76. 'val' => 'b', //
  77. ),
  78. ),
  79. ),
  80. );
  81. $ToolExcel->exportExcel($data);

demo 3:指定列宽
  1. <?php
  2. include '../vendor/autoload.php';
  3. use whalephp\tool\PHPExcelHelper;
  4. $ToolExcel = new PHPExcelHelper();
  5. $list = array(
  6. array('id'=>1,'name'=>'a','nickname'=>'aa'),
  7. array('id'=>2,'name'=>'b','nickname'=>'bb'),
  8. array('id'=>3,'name'=>'c','nickname'=>'cc'),
  9. array('id'=>4,'name'=>'d','nickname'=>'dddddddddddddddddddddddddddddddd'),
  10. );
  11. $key = array(
  12. 'id' => ['编号',10],
  13. 'name' => ['姓名',15],
  14. 'nickname' => ['昵称',35],
  15. );
  16. $ToolExcel->exportExcelSimp('简版测试',$key,$list);

demo 4:指定sheet信息
  1. <?php
  2. include '../vendor/autoload.php';
  3. use whalephp\tool\PHPExcelHelper;
  4. $ToolExcel = new PHPExcelHelper();
  5. $list = array(
  6. array('id'=>1,'name'=>'a','nickname'=>'aa'),
  7. array('id'=>2,'name'=>'b','nickname'=>'bb'),
  8. array('id'=>3,'name'=>'c','nickname'=>'cc'),
  9. array('id'=>4,'name'=>'d','nickname'=>'dddddddddddddddddddddddddddddddd'),
  10. );
  11. $key = array(
  12. 'id' => ['编号',10],
  13. 'name' => ['姓名',15],
  14. 'nickname' => ['昵称',35],
  15. );
  16. $ToolExcel->exportExcelSimp([
  17. 'file_name' => '简版测试',
  18. 'sheetTitle' => '工作区一',
  19. ],$key,$list);

demo 5:多sheet
  1. <?php
  2. include '../vendor/autoload.php';
  3. use whalephp\tool\PHPExcelHelper;
  4. $ToolExcel = new PHPExcelHelper();
  5. // 第一组数据
  6. //--------------------------------------------------------------
  7. $list = array(
  8. array('id'=>1,'name'=>'a','nickname'=>'aa'),
  9. array('id'=>2,'name'=>'b','nickname'=>'bb'),
  10. array('id'=>3,'name'=>'c','nickname'=>'cc'),
  11. array('id'=>4,'name'=>'d','nickname'=>'dddddddddddddddddddddddddddddddd'),
  12. );
  13. $key = array(
  14. 'id' => ['编号',10],
  15. 'name' => ['姓名',15],
  16. 'nickname' => ['昵称',35],
  17. );
  18. // 第二组数据
  19. //--------------------------------------------------------------
  20. $list_02 = array(
  21. array('id'=>1,'name'=>'a','nickname'=>'aa2'),
  22. array('id'=>2,'name'=>'b','nickname'=>'bb2'),
  23. array('id'=>3,'name'=>'c','nickname'=>'cc2'),
  24. array('id'=>4,'name'=>'d','nickname'=>'ddddddddddddddddddd2'),
  25. );
  26. $key_02 = array(
  27. 'id' => ['编号二',10],
  28. 'name' => ['姓名二',15],
  29. 'nickname' => ['昵称二',25],
  30. );
  31. $fileInfo = [
  32. 'file_name'=>'简版测试',
  33. 'sheet'=>[
  34. ['sheetIndex'=>0,'sheetTitle'=>'工作区一'],
  35. ['sheetIndex'=>1,'sheetTitle'=>'工作区二'],
  36. ]
  37. ];
  38. $ToolExcel->exportExcelSimp($fileInfo,[$key,$key_02],[$list,$list_02]);

demo 6:综合(更多配置、支持json字符串解析)
  1. <?php
  2. include '../vendor/autoload.php';
  3. use whalephp\tool\PHPExcelHelper;
  4. $ToolExcel = new PHPExcelHelper();
  5. // 第一组数据
  6. //--------------------------------------------------------------
  7. $list = array(
  8. array('id'=>1,'name'=>'a','nickname'=>'aa'),
  9. array('id'=>2,'name'=>'b','nickname'=>'bb'),
  10. array('id'=>3,'name'=>'c','nickname'=>'cc'),
  11. array('id'=>4,'name'=>'d','nickname'=>'dddddddddddddddddddddddddddddddd'),
  12. );
  13. $key = array(
  14. 'id' => ['编号',10],
  15. 'name' => ['姓名',15],
  16. 'nickname' => ['昵称',35],
  17. );
  18. // 第二组数据
  19. //--------------------------------------------------------------
  20. $list_02 = array(
  21. array('id'=>1,'name'=>'a','nickname'=>'aa2', 'data'=>["a"=>"aaa","b"=>"bbb","c"=>"ccc"]),
  22. array('id'=>2,'name'=>'b','nickname'=>'bb2', 'data'=>'{"a":"111","b":"222","c":"333"}'),
  23. array('id'=>3,'name'=>'c','nickname'=>'ddddddddddddddddddd2', 'data'=>'{"a":"aaa111","b":"bbb222","c":"ccc333"}'),
  24. );
  25. $key_02 = array(
  26. 'id' => '编号二',
  27. 'name' => ['姓名二',15],
  28. 'nickname' => '昵称二',
  29. 'data.a' => '节点a',
  30. 'data.b' => 'data.b',
  31. 'data' => [
  32. 'title' => '格式化数据',
  33. 'width' => 50,
  34. 'parse_json'=> [
  35. 'a' => '节点(a)',
  36. 'b' => '节点(b)',
  37. 'c' => '节点c',
  38. ]
  39. ],
  40. 'data2' => [
  41. 'title' => '原始数据',
  42. 'field' => 'data', // 对应数据中实际的字段键值
  43. 'width' => 40
  44. ]
  45. );
  46. $fileInfo = [
  47. 'file_name' => '简版测试',
  48. 'width' => 20, // 指定默认宽度
  49. 'sheet' => [
  50. ['sheetIndex'=>0,'sheetTitle'=>'工作区一'],
  51. ['sheetIndex'=>1,'sheetTitle'=>'工作区二'],
  52. ]
  53. ];
  54. $ToolExcel->exportExcelSimp($fileInfo,[$key_02,$key],[$list_02,$list]);

PHPExcel-Helper快速构建Excel的更多相关文章

  1. 快速构建Windows 8风格应用21-构建简单媒体播放器

    原文:快速构建Windows 8风格应用21-构建简单媒体播放器 本篇博文主要介绍如何构建一个简单的媒体播放器. <快速构建Windows 8风格应用20-MediaElement>博文中 ...

  2. 使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇

    作者:陈希章 发表于 2017年12月14日 在上一篇 使用PowerApps快速构建基于主题的轻业务应用 -- 入门篇 中,我用了三个实际的例子演示了如何快速开始使用PowerApps构建轻业务应用 ...

  3. 玩转Windows服务系列——使用Boost.Application快速构建Windows服务

    玩转Windows服务系列——创建Windows服务一文中,介绍了如何快速使用VS构建一个Windows服务.Debug.Release版本的注册和卸载,及其原理和服务运行.停止流程浅析分别介绍了Wi ...

  4. Apache Commons CLI官方文档翻译 —— 快速构建命令行启动模式

    昨天通过几个小程序以及Hangout源码学习了CLI的基本使用,今天就来尝试翻译一下CLI的官方使用手册. 下面将会通过几个部分简单的介绍CLI在应用中的使用场景. 昨天已经联系过几个基本的命令行参数 ...

  5. 使用Asp.net WebAPI 快速构建后台数据接口

    现在的互联网应用,无论是web应用,还是移动APP,基本都需要实现非常多的数据访问接口.其实对一些轻应用来说Asp.net WebAPI是一个很快捷简单并且易于维护的后台数据接口框架.下面我们来快速构 ...

  6. 利用Nodejs快速构建应用原型

    利用Nodejs快速构建应用原型 开发一个应用往往需要快速的构建原型,然后在此基础上设计和改进,前端可能立马能看到效果,但是后端业务逻辑不会那么快,这个时候其实我们需要额只是一些模拟数据,所以不需要真 ...

  7. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  8. Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  9. 【Android】如何快速构建Android Demo

    [Android]如何快速构建Android Demo 简介 在 Android 学习的过程中,经常需要针对某些项目来写一些测试的例子,或者在做一些 demo 的时候,都需要先写 Activity 然 ...

随机推荐

  1. 问题:PyCharm调试方法Force Step over与step over的区别

    Force Step over与step over的差别是,后者在执行到函数时,如果函数中设置了断点,会在该函数断点处暂停,等待进一步调试指令,而Force Step over不论函数中是否有断点,都 ...

  2. 浅谈php反序列化漏洞

    关于php的反序列化漏洞要先说到序列化和反序列化的两个函数,即: serialize() 和unserialize(). 简单的理解: 序列化就是将一个对象变成字符串 反序列化是将字符串恢复成对象 这 ...

  3. XDown单文件版 下载工具 支持磁力等多种链接方式下载

    原来的程序不带剪辑板探测,不支持迅雷链接等 增加功能后优化制作单文件版本. 下载类型为下图 magnet:?xt=urn:btih:836A228D932EF1C7EA1DD99D5D80B7CB0C ...

  4. Android全面解析之Context机制

    前言 很高兴遇见你~ 欢迎阅读我的文章. 在文章Android全面解析之由浅及深Handler消息机制中讨论到,Handler可以: 避免我们自己去手动写 死循环和输入阻塞 来不断获取用户的输入以及避 ...

  5. Spring Session解决Session共享

    1. 分布式Session共享   在分布式集群部署环境下,使用Session存储用户信息,往往出现Session不能共享问题.   例如:服务集群部署后,分为服务A和服务B,当用户登录时负载到服务A ...

  6. react第十四单元(react路由-react路由的跳转以及路由信息)

    第十四单元(react路由-react路由的跳转以及路由信息) #课程目标 理解前端单页面应用与多页面应用的优缺点 理解react路由是前端单页面应用的核心 会使用react路由配置前端单页面应用框架 ...

  7. Flink相对于Spark的优点

    Flink相对于Spark的优点 容错 Flink 基于两阶段提交实现了精确的一次处理语义. Spark Streaming 只能做到不丢数据,但是有重复. 反压 Flink 在数据传输过程中使用了分 ...

  8. 留心一下VS的这个调试代码的bug

    最近和同事在Debug代码时,遇到一个诡异的问题,开始以为是代码问题,分析了之后发现是VS(v16.8.3)的bug,特此分享一下,如果大家近期遇到类似的问题,不要茫然. 这个bug重现的方式是,在d ...

  9. 【进阶之路】线程池拓展与CompletionService操作异步任务

    大家好,我是练习java两年半时间的南橘,小伙伴可以一起互相交流经验哦. 一.扩展ThreadPoolExecutor 1.扩展方法介绍 ThreadPoolExecutor是可以扩展的,它内部提供了 ...

  10. Java基础进阶:继承重点摘要,继承详解,方法重写注意事项,方法重载与重写的区别,抽象类,代码块, 附重难点,代码实现源码,课堂笔记,课后扩展及答案

    继承重点摘要 *继承的特点: 子类在初始化之前,一定要先完成父类数据的初始化 子类在初始化之前,一定要先访问父类构造,完成父类数据的初始化 系统在每一个构造方法中默认隐藏了一句super(); 如果我 ...