PHP Excel 下载数据,并分页下载
直接上代码:
调用下载Excel:
$total=$duoduo->count(MOD.' as a',$where);
$objExcel= SelfExcelObject(); //导出
if($total !=false && $total >0 && in_array($_GET['otype'], array('tradelist', 'mall_order'))) {
$result = localSettionData($objExcel,$duoduo,$total,$where);//取出要导出的数据
set_time_limit(10);
if($result==false){
$result['msg'] = '操作异常!';
}
echo json_encode($result);exit;
}
预先定义
/**
* 获取表头,及获取要设置的数据
*/
function localSettionData($objExcel,$duoduoObj,$count_result,$where='',$otype="tradelist"){
$result = array('count_num'=>$count_result);
if(!$count_result|| !$objExcel ){return array('msg'=>'数据异常','count_num'=>$count_result);}
$down_pagesize=5000; /*下载 数据配置*/
$otitle="淘宝订单";
//data
$checked_arr = include DDROOT.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'checked_arr.php';
$lm_arr = include DDROOT.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'lm.php';
//设置单元格内容 //由PHPExcel根据传入内容自动判断单元格内容类型
$titlearr = array('a'=>'交易号','b'=>'下单时间','c'=>'商品名称','d'=>'单价','e'=>'数量','f'=>'成交额','g'=>'比例','h'=>'佣金','i'=>'易淘币','j'=>'积分','k'=>'结算时间','l'=>'认领','m'=>'会员','n'=>'店铺','o'=>'编号');
if($otype == 'mall_order') {
$otitle="商城订单";
$titlearr = array('a'=>'下单时间','b'=>'商城','c'=>'订单号','d'=>'联盟','e'=>'活动id','f'=>'总价','g'=>'单价','h'=>'数量','i'=>'佣金','j'=>'返利','k'=>'积分','l'=>'状态','m'=>'会员','n'=>'店铺'/*,'o'=>'分享','p'=>'转发'*/);
}
$objActSheet = $objExcel->getActiveSheet(); //得到当前表的子页面
$objActSheet->setTitle($otitle);//设置当前活动sheet的名称
foreach($titlearr AS $k=>$v) {
$objActSheet->setCellValue(strtoupper($k).'1', $v); //设置表头名称
$objActSheet->getColumnDimension(strtoupper($k))->setWidth(30);
}
//计算页码
$all_p_nums = ($count_result > $down_pagesize && $down_pagesize>0) ? ceil($count_result /$down_pagesize): 1 ; //采用分页来下载数据 防止内存溢出
$result['all_p_nums'] = $all_p_nums;
$write_excel_index = 1; //写入Excel的索引位置
for($down_page=1; $down_page <= $all_p_nums ; $down_page ++ ){
$down_tbindex=($down_page-1)*$down_pagesize;
if($otype == 'tradelist') {
$list=$duoduoObj->select_all('tradelist as a','*',$where.' LIMIT '.$down_tbindex .','.$down_pagesize);//所有数据
foreach($list as $k=>$arr){
$list[$k]['uname']=$duoduoObj->select('user','ddusername','id="'.$arr['uid'].'"'); // 店铺
/*if($arr['checked']!=0 && $arr['uid']==0){ $duoduo->update('tradelist',array('checked'=>0),'id="'.$arr['id'].'"'); }*/
$list[$k]['ucard_name']=$duoduoObj->select('user','ddusername','id="'.$arr['ucard_id'].'"'); // 会员名
}
//开始写数据到Excel
$count = count($list);
for($rows=0; $rows<$count; $rows++) {
$write_excel_index ++;
$i= $write_excel_index; //增加的索引
$objActSheet->setCellValue('A'.$i, " ".$list[$rows]['num_iid']."");
$objActSheet->setCellValue('B'.$i, $list[$rows]['create_time']);
$objActSheet->setCellValue('C'.$i, $list[$rows]['item_title']);
$objActSheet->setCellValue('D'.$i, $list[$rows]['pay_price']);
$objActSheet->setCellValue('E'.$i, $list[$rows]['item_num']);
$objActSheet->setCellValue('F'.$i, $list[$rows]['real_pay_fee']);
$commis_rate = $list[$rows]['commission_rate']*100;
$objActSheet->setCellValue('G'.$i, $commis_rate.'%');
$objActSheet->setCellValue('H'.$i, $list[$rows]['commission']);
$objActSheet->setCellValue('I'.$i, $list[$rows]['jifenbao']);
$objActSheet->setCellValue('J'.$i, $list[$rows]['jifen']);
$objActSheet->setCellValue('K'.$i, $list[$rows]['pay_time']);
$objActSheet->setCellValue('L'.$i, $checked_arr[$list[$rows]['checked']]);
$objActSheet->setCellValue('M'.$i, $list[$rows]['ucard_name']."|".$write_excel_index);
$objActSheet->setCellValue('N'.$i, $list[$rows]['uname']);
$objActSheet->setCellValue('O'.$i, $write_excel_index);
/* $objActSheet->setCellValue('M'.$i, $duoduo->getUserName($list[$rows]['uid']));
$objActSheet->setCellValue('N'.$i, $duoduo->getUserName($list[$rows]['ucard_id']));
$objActSheet->setCellValue('O'.$i, $duoduo->getUserName($list[$rows]['share_id']));
$objActSheet->setCellValue('P'.$i, $duoduo->getUserName($list[$rows]['send_id']));*/
}
}else{
$list = $duoduoObj->select_all('mall_order', '*', "id IN ($id) ORDER BY order_time DESC");//' LIMIT '.$down_tbindex .','.$down_pagesize
$count = count($list)+2;
$rows = 0;
$status_arr = array('0'=>'未确认','1'=>'确认');
for($i=2; $i<$count; $i++) {
$rows = $i - 2;
$objActSheet->setCellValue('A'.$i, date('Y-m-d H:i:s',$list[$rows]["order_time"]));
$objActSheet->setCellValue('B'.$i, $list[$rows]['mall_name']);
$objActSheet->setCellValue('C'.$i, $list[$rows]['order_code']);
$objActSheet->setCellValue('D'.$i, $lm_arr[$list[$rows]['lm']]['title']);
$objActSheet->setCellValue('E'.$i, $list[$rows]['adid']);
$objActSheet->setCellValue('F'.$i, $list[$rows]['sales']);
$objActSheet->setCellValue('G'.$i, $list[$rows]['item_price']);
$objActSheet->setCellValue('H'.$i, $list[$rows]['item_count']);
$objActSheet->setCellValue('I'.$i, $list[$rows]['commission']);
$objActSheet->setCellValue('J'.$i, $list[$rows]['fxje']);
$objActSheet->setCellValue('K'.$i, $list[$rows]['jifen']);
$objActSheet->setCellValue('L'.$i, $status_arr[$list[$rows]['status']]);
$objActSheet->setCellValue('M'.$i, $duoduo->getUserName($list[$rows]['uid']));
$objActSheet->setCellValue('N'.$i, $duoduo->getUserName($list[$rows]['ucard_id']));
$objActSheet->setCellValue('O'.$i, $duoduo->getUserName($list[$rows]['share_id']));
$objActSheet->setCellValue('P'.$i, $duoduo->getUserName($list[$rows]['send_id']));
}
}
unset($list);
sleep(1);//休息多久
}//#end for
$saveDir = 'exportexcelfile';//文件保存目录
$dateFileName = $otype."-".date('YmdHis', time()).".xls";//文件名
$outputFileName = DDROOT.DIRECTORY_SEPARATOR.$saveDir.DIRECTORY_SEPARATOR.$dateFileName;
if(!file_exists(DDROOT.DIRECTORY_SEPARATOR.$saveDir)) {
mkdir(DDROOT.DIRECTORY_SEPARATOR.$saveDir);
}
if(file_exists($outputFileName)) {//如果该文件存在则删除
unlink($outputFileName);
}
//输出内容到文件
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');
//$objWriter = new PHPExcel_Writer_Excel2007($objExcel);//用于 2007 格式
$objWriter->save($outputFileName);
$result['msg'] = 'SUCCESS';
$result['download'] = '<a href="'.SITEURL.'/'.$saveDir.'/'.$dateFileName.'">点击下载</a>';
return $result;
} /**
* PHP Excel 对象
*
*/
function SelfExcelObject(){
// 创建一个处理对象实例
$objExcel = new PHPExcel();
//设置文档基本属性
$objExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
//设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objExcel->getActiveSheet()->getStyle('A1:P1')->getFont()->setBold(true);
$objExcel->getActiveSheet()->getStyle('A1:P1')->getFont()->setSize(13);
$objExcel->getActiveSheet()->getStyle('A1:P1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);
$objExcel->getActiveSheet()->getStyle('A1:P1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objExcel->getActiveSheet()->getStyle('A1:P1')->getFill()->getStartColor()->setARGB('00FFFFE3');
$objExcel->getActiveSheet()->getStyle('A1:P1')->getBorders();
$objExcel->getActiveSheet()->getStyle('A1:P1')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objExcel->getActiveSheet()->getStyle('A1:P1')->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objExcel->getActiveSheet()->getStyle('A1:P1')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
return $objExcel ;
}
PHP Excel 下载数据,并分页下载的更多相关文章
- 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件
[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...
- 自动更新开奖数据的excel文件,供大家下载
自动更新开奖数据的excel文件,供大家下载 2010-03-14 20:22 228492人阅读打印来源:乐彩网 作者:eren 很多人拥有自制excel电子表格,常要更新最基本的开奖信息.如有多期 ...
- java实现赋值excel模板,并在新文件中写入数据,并且下载
/** * 生成excel并下载 */ public void exportExcel(){ File newFile = createNewFile(); //File newFile = new ...
- 前端点击下载excel表格数据
<el-button type="primary" @click="downloadChartData" size="mini"> ...
- Excel VBA宏 链接服务器 上传和下载数据
首先说明以下. 第一: 下面的 “ _" 也就是 空格下划线 在VBA中表示换行的意思:& 表示链接连个字符串的操作,注意 & 的前后是否需要空格 第二: 如果链接服务器,服 ...
- Java分页下载
需求.提供公共的可以按照一定条件查询出结果,并提供将查询结果全部下载功能(Excel.CSV.TXT),由于一次性查出结果放到内存会占用大量内存.需要支持分页模式查询出所有数据. 实现思路 1.在公共 ...
- Listview实现分页下载
分析: * 1.初始控件,展示第一页数据 * 2.设置触发条件 * 1.设置滚动监听 * 2.判断是否在底部 * 3.判断是否停止滚动 * 4.更改网络请求参数为下一页 * 5.异步网络请求 * 6. ...
- 使用NPOI将数据库里信息导出Excel表格并提示用户下载
使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 //mvc项目可以传多个id以逗号相隔的字符串 public ActionResult ...
- 【jsPDF】jsPDF插件实现将html页面转换成PDF,并下载,支持分页
1.目的:在前段是 jQuery库 或者 VUE库 或者两者混合库,将html 页面和数据 转换成PDF格式并下载,支持分页 1.项目背景: 对客户报修记录进行分类统计,并生成各种饼图.柱状图.线性图 ...
随机推荐
- Atitit 项目语言的选择 java c#.net php??
Atitit 项目语言的选择 java c#.net php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...
- .NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍
1年前,我在文章:这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)中(第9个项目),给大家推荐了一个开源免费的PDF读写组件 PDFSharp,PDFSharp我2年前就看过 ...
- 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式
上节我们提到,类Collections中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了第一类,本节我们介绍第二类. 第二类方法大概可以分为两组: 接受其他 ...
- Python碎碎念
1. 如何添加路径 主要有以下两种方式: 1> 临时的 import sys sys.path.append('C:\Users\Victor\Desktop') 2> 永久的 在Linu ...
- IOS FMDB 获取数据库表和表中的数据
ios开发中,经常会用到数据库sqlite的知识,除了增,删,改,查之外,我们说说如何获取数据库中有多少表和表相关的内容. 前言 跟数据库使用相关的一般的增删改查的语句,这里就不做解释了.在网上有很多 ...
- MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- CSharpGL(33)使用uniform块来优化对uniform变量的读写
CSharpGL(33)使用uniform块来优化对uniform变量的读写 +BIT祝威+悄悄在此留下版了个权的信息说: Uniform块 如果shader程序变得比较复杂,那么其中用到的unifo ...
- SQL Server2008R2 在windows8上安装,出现“兼容性”和 “执行未经授权的操作”的错误!
本人是windows8.1的操作系统,亲测安装成功 解决方法如下: 1.卸载干净sql Server2008r2,包括注册表内容,删除c盘下的安装路径! 2.关闭防火墙(这步很重要) 3.断开网络连接 ...
- CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记
使用相对单位em注意点 1.浏览器默认字体是16px,即1em = 16px,根元素设置如下 html{ font-size: 100%; /* WinIE text resize correctio ...
- BPM配置故事之案例5-必填与水印文本
物资申请表改好了,但是没过两天老李又找来了. 老李:这个表格每次都是各个部门发给我们,再由我们采购部来填,太影响效率了,以后要让他们自己填. 小明:那就让他们填呗,他们有权限啊. 老李:可是他们说不会 ...