PHPExcel用法有感
今日项目需求导出excel。我用最简单的header头方式导出了,但是需求部门退回了,说不满足他们的需求,需要我按照他们的模板来导出。
然后想到了PHPExcel,没用过,走了不少弯路。
1.去官网下载最新的包。
2.普通的导出(和普通Header头导出的一样)。
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Writer.Excel5");
import("Org.Util.PHPExcel.IOFactory.php");
import("Org.Util.PHPExcel.Worksheet.Drawing");
$date = date("Y_m_d",time());
$fileName = $date.".xls";
$objPHPExcel = new \PHPExcel();
$objProps = $objPHPExcel->getProperties();
$objActSheet = $objPHPExcel->setActiveSheetIndex(0);
$objActSheet->setCellValue('A1', '订单号');
$objActSheet->setCellValue('B1', '退货单号');
$objActSheet->setCellValue('C1', '生成时间');
$objActSheet->setCellValue('D1', '商品名称');
$objActSheet->setCellValue('E1', '物料编码');
$objActSheet->setCellValue('F1', '退货工单号');
$objActSheet->setCellValue('G1', '退款单号');
$n=2;
foreach($list as $value){
$where = array(
'back_id'=>$value['back_id']
);
$getDetial = $db->table('back_goods')->where($where)->find();
$objActSheet->setCellValueExplicit('A'.$n, $value['order_sn']);
$objActSheet->setCellValueExplicit('B'.$n, $value['back_sn']);
$objActSheet->setCellValue('C'.$n, date('Y-m-d H:i:s',$value['add_time']));
$objActSheet->setCellValue('D'.$n, $getDetial['goods_name']);
$objActSheet->setCellValue('E'.$n, $getDetial['goods_sn']);
$objActSheet->setCellValue('F'.$n, '');
$objActSheet->setCellValue('G'.$n, '');
$n++;
}
$fileName = iconv("utf-8", "gb2312", $fileName);
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"$fileName\"");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); //文件通过浏览器下载
3.写入到模板excel。
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Writer.Excel5");
import("Org.Util.PHPExcel.IOFactory.php");
import("Org.Util.PHPExcel.Worksheet.Drawing");
$PHPReader = new \PHPExcel_Reader_Excel5();
$fileName="./Public/a.xls";
$PHPExcel = $PHPReader->load($fileName);
$objActSheet = $PHPExcel->getSheet(0);
$allColumn = $objActSheet->getHighestRow();
$n=1+$allColumn;
if($data){
foreach($data as $k=>$v){
$objActSheet->setCellValue('A'.$n, $k+1);//编号
$objActSheet->setCellValue('B'.$n, $v['name']);//姓名
$n++;
}
}
$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter->save($fileName);
4.根据模板写入,并不改变模板,另存为下载。
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Writer.Excel5");
import("Org.Util.PHPExcel.IOFactory.php");
import("Org.Util.PHPExcel.Worksheet.Drawing");
$PHPReader = new \PHPExcel_Reader_Excel5();
$fileName="./Public/a.xls";
$PHPExcel = $PHPReader->load($fileName);
$objActSheet = $PHPExcel->getSheet(0);
$allColumn = $objActSheet->getHighestRow();
$n=1+$allColumn;
if($data){
foreach($data as $k=>$v){
$objActSheet->setCellValue('A'.$n, $k+1);//编号
$objActSheet->setCellValue('B'.$n, $v['name']);//姓名
$objActSheet->setCellValue('C'.$n, "");//性别?
$n++;
}
}
$file_name="test.xls";
$fileName = iconv("utf-8", "gb2312", $file_name);
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"$fileName\"");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5');
$objWriter->save('php://output'); //文件通过浏览器下载
注:如果遇到xlsx模板,把new类改成2007即可。普通的xls模板直接5
PHPExcel用法有感的更多相关文章
- PHPExcel用法
<?php //下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include ...
- phpexcel用法(转)
.php导出excel(多种方法) (2013-03-23 15:44:02) 转载▼ 分类: php 基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只 ...
- php中使用PHPExcel操作excel(xls)文件
读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址:http://phpexcel.codeplex.com/ 1.读取xls文件内容 代码如下 复制代码 ...
- PHP从数据库导出EXCEL文件
参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...
- php更新修改excel中的内容例子
代码如下 复制代码 //模板存放目录$dir = $DOCUMENT_ROOT.'/backoffice/admin/oemcheck/'; $templateName = '1.xlsx';$ou ...
- C#高级编程(第9版) 第10章 集合 笔记
话说 虽然敲过好多代码, 但除了C++,一直没正眼瞧过其它语言.(没办法 谁叫C++既有oop又能自由控制内存呢) 今天 看公司老项目的src,c#的,linq+Dictionary的用法有感.所以找 ...
- 项目中phpexcel的基本用法
前提:要下载PHPEXCEL库文件 如:phpexcel官方下载 ,本人使用下载 情形一:对于将数据写入EXCEL表中的用法 header("content-type:text/htm ...
- php利用PHPExcel类导出导入Excel用法
PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介 ...
- 使用PHPExcel操作Excel用法实例分析
本文实例分析了使用PHPExcel操作Excel用法.分享给大家供大家参考.具体分析如下: PHPExcel下载地址:http://www.codeplex.com/PHPExcel http://w ...
随机推荐
- OC学习篇之---通知(NSNotificationCenter)
在前一篇文章中我们介绍了OC中很常用的两个技术:KVC和KVO: http://blog.csdn.net/jiangwei0910410003/article/details/41912937,今天 ...
- IIS Server Farms集群负载
序言 随着公司业务的发展,后台业务就变的越来越多,然而服务器的故障又像月经一样,时不时的汹涌而至,让我们防不胜防.那么后台的高可用,以及服务器的处理能力就要做一个横向扩展的方案,以使后台业务持续的稳定 ...
- PullToRefreshListView 内嵌checkbox 数据丢失问题
在PullToRefreshListView 内部内嵌了Checkbox如下图所示: 原本设计思路是:对CheckBox 进行 setOnCheckedChangeListener 监听 当Check ...
- PL/SQL 0.几秒出结果,SQL效率一定高吗?
今天开发问我一个问题,PL/SQL很快出结果了,为什么应用还是很慢 create index F_AGT_SAVB_ACCTINFO_H_idx4 on F_AGT_SAVB_ACCTINFO_H ( ...
- Beanstalkd介绍
特征 优先级:任务 (job) 可以有 0~2^32 个优先级, 0 代表最高优先级,beanstalkd 采用最大最小堆 (Min-max heap) 处理任务优先级排序, 任何时刻调用 reser ...
- 从此走上一条iOS程序猿不归路。。。
新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...
- (转)iOS消息推送机制中pem文件的生成
转自:http://2015.iteye.com/blog/1567777 以前写了一篇文章:iOS消息推送机制的实现,这篇文章中生成的是p12文件,但是php是用的pem文件,生成的方法和p12文件 ...
- Java里的接口
Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现. Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现.OOP面向对象的编程,如 ...
- 《python源代码剖析》笔记 python中的Dict对象
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyDictObject对象 --> C++ STL中的map是基于RB-tre ...
- SPOJ 416 - Divisibility by 15(贪心)
糟烂的代码啊... 这个题目思路很简单——末位只可能为0和5,所有数字的和肯定被3整除 没有0和5的肯定不行 否则,把所有数字求和 如果被3整除,则从大到小输出 如果除3余1,则按以下顺序——删1: ...