thinkphp5中使用PHPExcel(转载)
thinkphp5中可以使用composer来获取第三方类库,使用起来特别方便,例如:可是使用composer下载PHPMailer,think-captcha(验证码)等等……
接下来说一下怎么使用PHPExcel,这是一个很好用的第三方类库。
1.使用composer下载PHPExcel,首先安装过composer之后,用dos命令行,引入到项目所在目录下,然后输入composer require phpexcel/phpexcel ,然后点回车键
2.在thinkphp中使用,大概分为四个步骤。
最简单的生成Excel文件
- $objPHPExcel = new \PHPExcel();
这里可能会遇到一个问题,报这样的错误。
- $objSheet = $objPHPExcel->getActiveSheet();
- $objSheet ->setTitle("demo");//可以给sheet设置名称为"demo"
(3)<1>然后就是在表格中写入数据
- $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数");
- $objSheet->setCellValue("A2","张三")->setCellValue("B2","100");
- $array = array(
- array(),
- array('姓名','分数'),
- array('张三','60'),
- array('李四','61'),
- array('王五','62'),
- );
- $objSheet -> fromArray($array);//数据较大时,不建议使用此方法,建议使用setCellValue()
(4)最后就是保存写好的数据
- $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//生成一个Excel2007文件
- $objWriter->save('E:/test.xlsx');//保存文件
从数据库中到导出文件
- $path = 'E:/';
- $name = 'think_admin';
- $objPHPExcel = new \PHPExcel();
- for ($i=1; $i < 3; $i++) {
- if ($i>1) {
- $objPHPExcel->createSheet();
- }
- $objPHPExcel->setActiveSheetIndex($i-1);//把当前创建的sheet设置为活动sheet
- $objSheet = $objPHPExcel->getActiveSheet();//获得当前活动Sheet
- $objSheet->setTitle("user".$i);
- if($i==1){
- $db_admin = db('admin')->where('sex','男')->select();
- }else{
- $db_admin = db('admin')->where('sex','女')->select();
- }
- $objSheet->setCellValue('A1','id')->setCellValue('B1','user')->setCellValue('C1','name')->setCellValue('D1','password')
- ->setCellValue('E1','imgpath')->setCellValue('F1','tel')->setCellValue('G1','sex')->setCellValue('H1','age');
- $j = 2;
- foreach ($db_admin as $key => $value) {
- $objSheet->setCellValue('A'.$j,$value['id'])->setCellValue('B'.$j,$value['user'])->setCellValue('C'.$j,$value['name'])
- ->setCellValue('D'.$j,$value['password'])
- ->setCellValue('E'.$j,$value['imgpath'])->setCellValue('F'.$j,$value['tel'])->setCellValue('G'.$j,$value['sex'])
- ->setCellValue('H'.$j,$value['age']);
- $j++;
- }
- }
- $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
- $objWriter->save($path.$name.'.xlsx');
在浏览器上输出Excel文件(下载)
- $filename = 'think_admin.xls';
- $objPHPExcel = new \PHPExcel();
- for ($i=1; $i < 3; $i++) {
- if ($i>1) {
- $objPHPExcel->createSheet();
- }
- $objPHPExcel->setActiveSheetIndex($i-1);//把当前创建的sheet设置为活动sheet
- $objSheet = $objPHPExcel->getActiveSheet();//获得当前活动Sheet
- $objSheet->setTitle("user".$i);
- if($i==1){
- $db_admin = db('admin')->where('sex','男')->select();
- }else{
- $db_admin = db('admin')->where('sex','女')->select();
- }
- $objSheet->setCellValue('A1','id')->setCellValue('B1','user')->setCellValue('C1','name')->setCellValue('D1','password')
- ->setCellValue('E1','imgpath')->setCellValue('F1','tel')->setCellValue('G1','sex')->setCellValue('H1','age');
- $j = 2;
- foreach ($db_admin as $key => $value) {
- $objSheet->setCellValue('A'.$j,$value['id'])->setCellValue('B'.$j,$value['user'])->setCellValue('C'.$j,$value['name'])->setCellValue('D'.$j,$value['password'])
- ->setCellValue('E'.$j,$value['imgpath'])->setCellValue('F'.$j,$value['tel'])->setCellValue('G'.$j,$value['sex'])->setCellValue('H'.$j,$value['age']);
- $j++;
- }
- }
- $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
- header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
- header('Content-Disposition: attachment;filename="'.$filename.'"');//告诉浏览器将输出文件的名称(文件下载)
- header('Cache-Control: max-age=0');//禁止缓存
- $objWriter->save("php://output");
转载地址:http://blog.csdn.net/Iloveyougirls/article/details/53212402
thinkphp5中使用PHPExcel(转载)的更多相关文章
- thinkphp5中使用phpmailer实现发送邮件功能(转载)
一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例). 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/I ...
- php中使用PHPExcel操作excel(xls)文件
读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址:http://phpexcel.codeplex.com/ 1.读取xls文件内容 代码如下 复制代码 ...
- tp5.0中使用PHPexcel,以及Loader的一些问题
在5.0中使用PHPexcel遇到一些问题,记录一下方便以后查看. 非使用PHPexcel的方法: 参考:http://blog.csdn.net/sinat_35861727/article/det ...
- thinkphp5中如何使用 usort
thinkphp5中如何使用 usort 一.总结 一句话总结:其实比较函数加上命名空间就好啦,不然找不到 比较函数加命名空间 数组做usort的第二个参数 usort($question_list, ...
- git在eclipse中的配置 转载
git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...
- thinkphp5中的配置如何使用
thinkphp5中的配置如何使用 一.总结 一句话总结:先加载配置,然后读取配置即可 加载配置 读取配置 Config::load(APP_PATH.'fry_config.php');\\加载配置 ...
- thinkphp5中的一些关于命名空间的tisp
1.thinkphp5中公共函数文件common中,不需要use,也可以直接使用vendor中的类文件. 2.在类前面的反斜杠作用是,直接使用最外层的命名空间,有时不想use某个X类,却想使用X类时, ...
- C#高级编程六十九天----DLR简介 .在.NET中使用DLR(转载) 我也来说说Dynamic
DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...
- C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
C# json反序列化 对象中嵌套数组 (转载) 看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的 Newtonso ...
随机推荐
- YUV420、YUV422、RGB24转换
//平面YUV422转平面RGB24static void YUV422p_to_RGB24(unsigned char *yuv422[3], unsigned char *rgb24, int ...
- Visual Studio 2015编译Lua 5.3.4遇到的坑
被坑的不浅,遇到错误:" LNK1561:必须定义入口点",解决方案删除再建,步骤一遍一遍操作,还是报错.如下图所示: 首先,它必须要改成DLL或者LIB(动态/静态库),如果是应 ...
- 使用AShot进行网页全页截图
import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.Chrom ...
- chrome浏览器美化插件:让您的浏览器页面冒水泡, 游小鱼儿
下载插件和效果图 这是一个让你的浏览器冒泡泡的插件, 浏览网页的时候仿佛置身于海底世界: 插件下载地址:http://files.cnblogs.com/files/diligenceday/chro ...
- go微服务框架go-micro深度学习(二) 入门例子
上一篇帖子简单介绍了go-micro的整体框架结构,这一篇主要写go-micro使用方式的例子,中间会穿插一些go-micro的源码,和调用流程图,帮大家更好的理解go-micro的底层.更详细更具体 ...
- iframe之间操作记录
1.watch.js (function ($) { $.fn.watch = function (callback) { return this.each(function () { //缓存以前的 ...
- 【C++】C++中的引用与指针
想必大家对C++中的指针都有所了解,但是什么是引用呢?C++11标准引入了“引用”的新功能. 引用 引用(reference):给对象起了另外一个名字,引用类型引用(refers to)另外一种类型, ...
- Oracle&SQLServer中实现跨库查询
一.在SQLServer中连接另一个SQLServer库数据 在SQL中,要想在本地库中查询另一个数据库中的数据表时,可以创建一个链接服务器: EXEC master.dbo.sp_addlinked ...
- Atitit 如何在水泥森林打猎 找到合适的公司
Atitit 如何在水泥森林打猎 找到合适的公司 1. 我们工作的本质就是打猎,万年前在草原森林里面打猎,现在在水泥森林里面打猎 2 1.1. 我们的本质职位只有一个,那就是猎人 2 1.2. 所有 ...
- Delphi如何处理在进行大量循环时,导致的应用程序没有响应的情况
一般用在比较费时的循环中,往往导致应用程序没有响应,此时在比较费时的程序体中加入Application.ProcessMessages即可解决,该语句的作用是检查并先处理消息队列中的其他消息. 例如, ...