项目介绍

PHPExcel-Helper是什么?

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

github

PHPExcel-Helper存在的意义?

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

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

安装教程

使用 composer 安装,依赖 phpexcel

$ composer require whalephp/phpexcel-helper

Demo

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

demo 2:跨行跨列表格
<?php
include '../vendor/autoload.php'; use whalephp\tool\PHPExcelHelper; $ToolExcel = new PHPExcelHelper(); $data = array(
'file_name' => '测试-跨行跨列',
'sheetInfo' => array(
'sheetIndex' => 0,
'sheetTitle' => '订单汇总',
),
'startCell' => array( //开始写入位置
'row'=>1,
'col'=>1
),
'cellData' => array(
array(
array(
'val' => 'A1',
'rowspan' => 2, //跨行数
'colspan' => 2, //跨列数
'remarks' => '备注1',
),
array(
'val' => 'B1', //
'rowspan' => 2, //跨行数
'colspan' => 2, //跨行数
),
array(
'val' => 'C1',
'colspan' => 2,
),
array(
'val' => 'D1', //
'colspan' => 2,
),
array(
'val' => 'A1',
'rowspan' => 2, //跨行数
'colspan' => 2, //跨列数
'remarks' => '备注1',
),
array(
'val' => 'C1',
'colspan' => 2,
),
array(
'val' => 'D1', //
'colspan' => 2,
),
),
array(
array(
'val' => '1',
),
array(
'val' => '2',
),
array(
'val' => '3',
),
array(
'val' => '4',
),
array(
'val' => '5',
),
array(
'val' => '6',
),
),
array(
array(
'val' => 'a',
),
array(
'val' => 'b', //
),
), ),
); $ToolExcel->exportExcel($data);

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

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

demo 5:多sheet
<?php
include '../vendor/autoload.php'; use whalephp\tool\PHPExcelHelper; $ToolExcel = new PHPExcelHelper(); // 第一组数据
//--------------------------------------------------------------
$list = array(
array('id'=>1,'name'=>'a','nickname'=>'aa'),
array('id'=>2,'name'=>'b','nickname'=>'bb'),
array('id'=>3,'name'=>'c','nickname'=>'cc'),
array('id'=>4,'name'=>'d','nickname'=>'dddddddddddddddddddddddddddddddd'),
);
$key = array(
'id' => ['编号',10],
'name' => ['姓名',15],
'nickname' => ['昵称',35],
); // 第二组数据
//--------------------------------------------------------------
$list_02 = array(
array('id'=>1,'name'=>'a','nickname'=>'aa2'),
array('id'=>2,'name'=>'b','nickname'=>'bb2'),
array('id'=>3,'name'=>'c','nickname'=>'cc2'),
array('id'=>4,'name'=>'d','nickname'=>'ddddddddddddddddddd2'),
);
$key_02 = array(
'id' => ['编号二',10],
'name' => ['姓名二',15],
'nickname' => ['昵称二',25],
); $fileInfo = [
'file_name'=>'简版测试',
'sheet'=>[
['sheetIndex'=>0,'sheetTitle'=>'工作区一'],
['sheetIndex'=>1,'sheetTitle'=>'工作区二'],
]
]; $ToolExcel->exportExcelSimp($fileInfo,[$key,$key_02],[$list,$list_02]);

demo 6:综合(更多配置、支持json字符串解析)
<?php
include '../vendor/autoload.php'; use whalephp\tool\PHPExcelHelper; $ToolExcel = new PHPExcelHelper(); // 第一组数据
//--------------------------------------------------------------
$list = array(
array('id'=>1,'name'=>'a','nickname'=>'aa'),
array('id'=>2,'name'=>'b','nickname'=>'bb'),
array('id'=>3,'name'=>'c','nickname'=>'cc'),
array('id'=>4,'name'=>'d','nickname'=>'dddddddddddddddddddddddddddddddd'),
);
$key = array(
'id' => ['编号',10],
'name' => ['姓名',15],
'nickname' => ['昵称',35],
); // 第二组数据
//--------------------------------------------------------------
$list_02 = array(
array('id'=>1,'name'=>'a','nickname'=>'aa2', 'data'=>["a"=>"aaa","b"=>"bbb","c"=>"ccc"]),
array('id'=>2,'name'=>'b','nickname'=>'bb2', 'data'=>'{"a":"111","b":"222","c":"333"}'),
array('id'=>3,'name'=>'c','nickname'=>'ddddddddddddddddddd2', 'data'=>'{"a":"aaa111","b":"bbb222","c":"ccc333"}'),
);
$key_02 = array(
'id' => '编号二',
'name' => ['姓名二',15],
'nickname' => '昵称二',
'data.a' => '节点a',
'data.b' => 'data.b',
'data' => [
'title' => '格式化数据',
'width' => 50,
'parse_json'=> [
'a' => '节点(a)',
'b' => '节点(b)',
'c' => '节点c',
]
],
'data2' => [
'title' => '原始数据',
'field' => 'data', // 对应数据中实际的字段键值
'width' => 40
]
); $fileInfo = [
'file_name' => '简版测试',
'width' => 20, // 指定默认宽度
'sheet' => [
['sheetIndex'=>0,'sheetTitle'=>'工作区一'],
['sheetIndex'=>1,'sheetTitle'=>'工作区二'],
]
]; $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. PyQt(Python+Qt)学习随笔:信号签名(signature of the signal)是什么?

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1.概念解释 函数签名:由函数的参数个数与其类型组成.函数在重载时,利用函数签名的不同即参数个数与类 ...

  2. 【面试】关于get和post两种方法的不同。

    最近在面试题和笔试题中经常会看到这道题,所以打算系统的整理一下. 一般标准的答案是这样的. GET在浏览器回退时是无害的,而POST会再次提交请求(浏览器应该告知用户数据会被重新提交). GET产生的 ...

  3. Scrum冲刺_Day01

    一.团队展示: 1.项目:light_note备忘录 2.队名:删库跑路队 3.团队成员 队员(不分先后) 项目角色 黄敦鸿 后端工程师.测试 黄华 后端工程师.测试 黄骏鹏 后端工程师.测试 黄源钦 ...

  4. Codeforces Edu Round 49 A-E

    A. Palindromic Twist 由于必须改变.所以要使\(a[i] = a[n - i + 1]\). 要么同向走,但必须满足之前的\(a[i] = a[n - i + 1]\). 要么相遇 ...

  5. 题解-Ehab's REAL Number Theory Problem

    Ehab's REAL Number Theory Problem 前置知识 质数 分解质因数 无向无权图最小环<讲> Ehab's REAL Number Theory Problem/ ...

  6. 算法(图论)——最小生成树及其题目应用(prim和Kruskal算法实现)

    题目 n个村庄间架设通信线路,每个村庄间的距离不同,如何架设最节省开销? Kruskal算法 特点 适用于稀疏图,时间复杂度 是nlogn的. 核心思想 从小到大选取不会产生环的边. 代码实现 代码中 ...

  7. 四、git学习之——远程仓库

    Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以"克隆"这个原始版本库,而且每台机器的版 ...

  8. 第一篇:docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 由于此类文章博客园鉴定为简单文章,所以已经移到csdn[https://blog.csd ...

  9. Spark-3-调优要点

    1 内存调整要点 Memory Tuning,Java对象会占用原始数据2~5倍甚至更多的空间.最好的检测对象内存消耗的办法就是创建RDD,然后放到cache里面去,然后在UI上面看storage的变 ...

  10. Durid的特点

    Durid的特点 1.为什么会有Durid? 创建Druid的最初意图主要是为了解决查询延迟问题,当时试图使用Hadoop来实现交互式查询分析,但是很难满足实时分析的需要.而Druid提供了以交互方式 ...