thinkphp5中可以使用composer来获取第三方类库,使用起来特别方便,例如:可是使用composer下载PHPMailer,think-captcha(验证码)等等……

接下来说一下怎么使用PHPExcel,这是一个很好用的第三方类库。

1.使用composer下载PHPExcel,首先安装过composer之后,用dos命令行,引入到项目所在目录下,然后输入composer require phpexcel/phpexcel ,然后点回车键

你会发现项目的目录中在vendor的目录下多了一个文件夹(phpexcel),这个文件夹中的东西就是要使用的php中的Excel表格操作

2.在thinkphp中使用,大概分为四个步骤。

 

最简单的生成Excel文件

(1)首先第一步是:实例化phpexcel
  1. $objPHPExcel = new \PHPExcel();

这里可能会遇到一个问题,报这样的错误。

 
然后,搜索到这个文件把这一行去掉就ok。
(2)获得当前活动sheet,因为Excel有一个默认的sheet。
  1. $objSheet = $objPHPExcel->getActiveSheet();
  1. $objSheet ->setTitle("demo");//可以给sheet设置名称为"demo"

(3)<1>然后就是在表格中写入数据

  1. $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数");
  2. $objSheet->setCellValue("A2","张三")->setCellValue("B2","100");
<2>还有一个方法是用数组
  1. $array = array(
  2. array(),
  3. array('姓名','分数'),
  4. array('张三','60'),
  5. array('李四','61'),
  6. array('王五','62'),
  7. );
  8. $objSheet -> fromArray($array);//数据较大时,不建议使用此方法,建议使用setCellValue()

(4)最后就是保存写好的数据

  1. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//生成一个Excel2007文件
  2. $objWriter->save('E:/test.xlsx');//保存文件

从数据库中到导出文件

  1. $path = 'E:/';
  2. $name = 'think_admin';
  3. $objPHPExcel = new \PHPExcel();
  4. for ($i=1; $i < 3; $i++) {
  5. if ($i>1) {
  6. $objPHPExcel->createSheet();
  7. }
  8. $objPHPExcel->setActiveSheetIndex($i-1);//把当前创建的sheet设置为活动sheet
  9. $objSheet = $objPHPExcel->getActiveSheet();//获得当前活动Sheet
  10. $objSheet->setTitle("user".$i);
  11. if($i==1){
  12. $db_admin = db('admin')->where('sex','男')->select();
  13. }else{
  14. $db_admin = db('admin')->where('sex','女')->select();
  15. }
  16. $objSheet->setCellValue('A1','id')->setCellValue('B1','user')->setCellValue('C1','name')->setCellValue('D1','password')
  17. ->setCellValue('E1','imgpath')->setCellValue('F1','tel')->setCellValue('G1','sex')->setCellValue('H1','age');
  18. $j = 2;
  19. foreach ($db_admin as $key => $value) {
  20. $objSheet->setCellValue('A'.$j,$value['id'])->setCellValue('B'.$j,$value['user'])->setCellValue('C'.$j,$value['name'])
  21. ->setCellValue('D'.$j,$value['password'])
  22. ->setCellValue('E'.$j,$value['imgpath'])->setCellValue('F'.$j,$value['tel'])->setCellValue('G'.$j,$value['sex'])
  23. ->setCellValue('H'.$j,$value['age']);
  24. $j++;
  25. }
  26. }
  27. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  28. $objWriter->save($path.$name.'.xlsx');

在浏览器上输出Excel文件(下载)

  1. $filename = 'think_admin.xls';
  2. $objPHPExcel = new \PHPExcel();
  3. for ($i=1; $i < 3; $i++) {
  4. if ($i>1) {
  5. $objPHPExcel->createSheet();
  6. }
  7. $objPHPExcel->setActiveSheetIndex($i-1);//把当前创建的sheet设置为活动sheet
  8. $objSheet = $objPHPExcel->getActiveSheet();//获得当前活动Sheet
  9. $objSheet->setTitle("user".$i);
  10. if($i==1){
  11. $db_admin = db('admin')->where('sex','男')->select();
  12. }else{
  13. $db_admin = db('admin')->where('sex','女')->select();
  14. }
  15. $objSheet->setCellValue('A1','id')->setCellValue('B1','user')->setCellValue('C1','name')->setCellValue('D1','password')
  16. ->setCellValue('E1','imgpath')->setCellValue('F1','tel')->setCellValue('G1','sex')->setCellValue('H1','age');
  17. $j = 2;
  18. foreach ($db_admin as $key => $value) {
  19. $objSheet->setCellValue('A'.$j,$value['id'])->setCellValue('B'.$j,$value['user'])->setCellValue('C'.$j,$value['name'])->setCellValue('D'.$j,$value['password'])
  20. ->setCellValue('E'.$j,$value['imgpath'])->setCellValue('F'.$j,$value['tel'])->setCellValue('G'.$j,$value['sex'])->setCellValue('H'.$j,$value['age']);
  21. $j++;
  22. }
  23. }
  24. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  25. header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
  26. header('Content-Disposition: attachment;filename="'.$filename.'"');//告诉浏览器将输出文件的名称(文件下载)
  27. header('Cache-Control: max-age=0');//禁止缓存
  28. $objWriter->save("php://output");

转载地址:http://blog.csdn.net/Iloveyougirls/article/details/53212402

thinkphp5中使用PHPExcel(转载)的更多相关文章

  1. thinkphp5中使用phpmailer实现发送邮件功能(转载)

    一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例). 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/I ...

  2. php中使用PHPExcel操作excel(xls)文件

    读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址:http://phpexcel.codeplex.com/ 1.读取xls文件内容  代码如下 复制代码 ...

  3. tp5.0中使用PHPexcel,以及Loader的一些问题

    在5.0中使用PHPexcel遇到一些问题,记录一下方便以后查看. 非使用PHPexcel的方法: 参考:http://blog.csdn.net/sinat_35861727/article/det ...

  4. thinkphp5中如何使用 usort

    thinkphp5中如何使用 usort 一.总结 一句话总结:其实比较函数加上命名空间就好啦,不然找不到 比较函数加命名空间 数组做usort的第二个参数 usort($question_list, ...

  5. git在eclipse中的配置 转载

    git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...

  6. thinkphp5中的配置如何使用

    thinkphp5中的配置如何使用 一.总结 一句话总结:先加载配置,然后读取配置即可 加载配置 读取配置 Config::load(APP_PATH.'fry_config.php');\\加载配置 ...

  7. thinkphp5中的一些关于命名空间的tisp

    1.thinkphp5中公共函数文件common中,不需要use,也可以直接使用vendor中的类文件. 2.在类前面的反斜杠作用是,直接使用最外层的命名空间,有时不想use某个X类,却想使用X类时, ...

  8. C#高级编程六十九天----DLR简介 .在.NET中使用DLR(转载) 我也来说说Dynamic

    DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...

  9. C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

    C# json反序列化 对象中嵌套数组 (转载)   看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的   Newtonso ...

随机推荐

  1. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  2. Java中定义常量方法及建议(Class/Interface)

    Class定义常量方法(推荐方法) //final修饰符 public final class Constants { //私有构造方法 private Constants() {} public s ...

  3. Android必学之数据适配器BaseAdapter

    什么是数据适配器? 下图展示了数据源.适配器.ListView等数据展示控件之间的关系.我们知道,数据源是各种各样的,而ListView所展示数据的格式则是有一定的要求的.数据适配器正是建立了数据源与 ...

  4. [Java] 绕过证书验证调 HTTPS 接口时报 “SSLHandshakeException: DHPublicKey does not comply to algorithm constraints”的解决办法

    作者: zyl910 一.缘由 最近有在对接一个无证书的HTTPS接口时,总是收到"SSLHandshakeException: DHPublicKey does not comply to ...

  5. 通过__block的作用深入研究block

    block普通引用 默认情况下,在block中访问外部变量是通过复制一个变量来操作的,既可以读,但是写操作不对原变量生效,下面通过代码来举证 NSString *a = @"testa&qu ...

  6. 单片机成长之路(51基础篇) - 007 CH340CH341最全说明

    比较全的CH340,CH341应用说明 CH340 以前用USB转串口时图方便一般也都是直接买现成的USB转串口模块,但是后面设计需要,不等不将CH340这个模块集成到电路板中,经过多次失败,终于得到 ...

  7. __NSArrayI __NSArray0 __NSSingleObjectArrayI __NSPlaceholderArray __NSArrayM

    如果你的 全局 可变数组 前面  用了  copy修饰,那么 调用   arr addObjectsFromArray: 的时候 就 会崩溃,而且提示你  是  [__NSArray0 addObje ...

  8. ios the request was denied by service delegate for reason unspecified

    报错的情况如下: xcode8(The request was denied by service delegate (SBMainWorkspace) for reason: Unspecified ...

  9. SNF软件开发机器人2018最新更新内容

    SNF软件开发机器人从10月份到现在的更新升级情况如下: 1 表单 表单控件占多列时,宽度默认0,自适应宽度2 excel导出 部分excel导出方法移动到框架中,可通用获取3 生成代码 生成的代码, ...

  10. 当使用 SelfHost 的 OWIN 承载 SignalR 时,重启 OWIN 后,SignalR 不能正常工作

    需要在初始化时,重新对 Resolver 赋值一个新的实例: public class Startup { public void Configuration(IAppBuilder app) { v ...