PHPExcel导出excel表格
if(!function_exists('exportExcel')){
//导出excel文件
function exportExcel($datas, $save_method='http', $save_path=''){
set_time_limit(0);
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$excel_title = '箱子详情列表'.date('YmdHis',time());
$code = $datas['code'];
$totalBox = $datas['totalBox'];
$totalPackages = $datas['totalPackages'];
$totalWeight = $datas['totalWeight'];
$data = $datas['data'];
require_once ROOT_PATH.'/Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()
->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
$row = array('A','B','C','D','E','F','G','H');
// 设置列宽
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(23);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(18);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(22);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(23);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
$styleThinBlackBorderOutline = array(
'borders' => array (
'outline' => array (
'style' => PHPExcel_Style_Border::BORDER_THIN,
'color' => array ('argb' => 'FF000000'), ),
),
);
for($i=0;$i<count($row);$i++){
//设置边框
for ($a = 1; $a < 4; $a++) {
$objPHPExcel->getActiveSheet()->getStyle($row[$i] . $a)->applyFromArray($styleThinBlackBorderOutline);
}
//设置居中
for($j=1;$j<500;$j++){
$objPHPExcel->getActiveSheet()->getStyle($row[$i].$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle($row[$i].$j)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
}
//设置背景色
$objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'1')->getFill()->getStartColor()->setARGB('00FFFF00');
$objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'2:'.$row[$i].'3')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'2:'.$row[$i].'3')->getFill()->getStartColor()->setARGB('00DBE5F1');
//设置换行
$objPHPExcel->getActiveSheet()->getStyle($row[$i].'2')->getAlignment()->setWrapText(true);
}
// 设置行高
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(28);
$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(66);
//定义表的前三行
$objPHPExcel->getActiveSheet()
->mergeCells('A1:B1')
->mergeCells('C1:D1')
->mergeCells('E1:F1')
->mergeCells('G1:H1')
->mergeCells('B2:B3')
->mergeCells('C2:C3')
->mergeCells('H2:H3')
->mergeCells('G2:G3');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '客户代码 Code:')
->setCellValue('C1', $code)
->setCellValue('E1', '日期 Date:')
->setCellValue('G1', date('Y-m-d H:i:s',time()))
->setCellValue('A2', '总箱数:'.$totalBox."\n".'Total box')
->setCellValue('A3', '箱号')
->setCellValue('B2', '转运单号'."\n".'Tracking Number')
->setCellValue('C2', '订单号')
->setCellValue('D2', '总包裹数:'.$totalPackages."\n".'Total Packages')
->setCellValue('D3', '包裹重量(g)')
->setCellValue('E2', '总箱重(kg):'.$totalWeight."\n".'Total Weight')
->setCellValue('E3', '箱重(kg)')
->setCellValue('F2', '总箱体积重'."\n".'(长*宽*高cm/5000)')
->setCellValue('F3', '箱体积(长*宽*高cm)')
->setCellValue('G2', '头程'."\n".'发货方式')
->setCellValue('H2', '跟踪号'."\n".'Tracking Number');
//处理后面的逻辑
//当前所在的行数
$num = 4;
foreach($data as $k => $v){
//具体订单个数
$len = count($v);
$mergeLen = $num + $len-4;
$objPHPExcel->getActiveSheet()
->mergeCells('E'.$num.':E'.$mergeLen)
->mergeCells('F'.$num.':F'.$mergeLen)
->mergeCells('G'.$num.':G'.$mergeLen)
->mergeCells('H'.$num.':H'.$mergeLen);
$objPHPExcel->setActiveSheetIndex()
->setCellValue('A'.$num, $v['boxId'])
->setCellValue('E'.$num, $v['weightss'])
->setCellValue('G'.$num, $v['carrier_company']);
for($i=0;$i<$len-3;$i++){
$objPHPExcel->setActiveSheetIndex()
->setCellValue('A'.$num, $v['boxId'])
->setCellValueExplicit('B'.$num, $v[$i]['tracknumber'],PHPExcel_Cell_DataType::TYPE_STRING)
->setCellValue('C'.$num, $v[$i]['ebay_id'])
->setCellValue('D'.$num, $v[$i]['weight']);
$num++;
}
}
$objPHPExcel->getActiveSheet()->setTitle($excel_title);
$objPHPExcel->setActiveSheetIndex(0);
$filename = $excel_title.'.xls';
if($save_method == 'file'){
//保存到文件
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$full_path = $save_path.$filename;
//本地使用,线上注释
//$full_path = iconv('utf-8', 'gbk//IGNORE', $full_path);
if(is_file($full_path)) unlink($full_path);
$objWriter->save($full_path);
return $full_path;
}else{
ob_end_clean();
//直接在浏览器输出
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');
}
}
}
PHPExcel导出excel表格的更多相关文章
- php:PHPExcel导出excel表格
一.动态生成的内容如何能当成文件来下载呢? 方法:1.将Content-Type设置成application/octet-stream就可以了,即[header('Content-Type: appl ...
- PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法
方法一:前面加空格 $objActSheet->setCellValue('A1', ' '.'330602198804224688'); 方法二: $objActSheet->setCe ...
- tp5.0 composer下载phpexcel 实现导出excel 表格
tp5.0 composer下载phpexcel 实现导出excel 表格 1.在下载好的tp5.0 框架里面使用 composer 下载phpexcel 的插件 composer require p ...
- PHP导入导出excel表格图片(转)
写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...
- php header函数导出excel表格
推荐一个除了用PHPExcel导出表格之外的另外一种比较简单不需要引入类文件的表格导入方法——header()导出excel表格. 导出表格的步骤封装成了方法,以便于重复使用,代码如下: /** * ...
- PHP导入导出excel表格图片的代码和方法大全
基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...
- java中使用jxl导出Excel表格详细通用步骤
该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...
- .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格
一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...
- java导出excel表格
java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...
随机推荐
- App 组件化/模块化之路——构建开发架构思路
App 组件化/模块化开发架构思路 随着业务的发展 App 开发技术也越来越成熟,对开发者来说 App 代码量也迅速地增长到一个数量级.对于如何架构 App 已经每个开发者面临的实际问题.好的架构可以 ...
- 5个为什么(five-whys)
文章非常好,我认为我们必须实施这一思想. 原文:http://venturehacks.com/articles/five-whys 翻译:http://www.tuicool.com/article ...
- updateByPrimaryKey和updateByPrimaryKeySelective insert和insertSelective
这两个update都是使用generator生成的mapper.xml文件中,对dao层的更新操作 updateByPrimaryKey对你注入的字段全部更新(不判断是否为Null) updateBy ...
- 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存 ...
- xtrabackup备份mysql数据库的使用方法
xtrabackup是由percona提供的mysql备份工具,它是一款物理备份工具,通过连接数据库把数据库的数据备份出来.对于innodb存储引擎其支持全量备份和增量备份.对于myisam存储引擎只 ...
- java在控制台输出空心正方形,菱形,空心菱形
使用for和if打印一个空心正方形 /*思路:要想打印一个5x5的空心正方形,首先它的第一横行和最后一行都是填满的,需要全部遍历出来,第二三四行和只有左右两条边是出来的,中间部分为空的.因此在打印第 ...
- Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划)
Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划) Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己 ...
- 发博客用的一些HTML
这个世界,在发生什么? 移动光标 <p style="background: #999999; padding: 5px; font-size: 22px;">< ...
- jenkins IOS- ad-hoc 打包
背景 客户无大企业证书,只有开发者证书,如果进行开发分发测试只能采用两种方式 testfight ad-hoc打包 上testfight存在一定的审核时间,排除掉,最后选择打ad-hoc的包 解决 查 ...
- 用Node.JS+MongoDB搭建个人博客(成品展示)
在博客里可以随意畅写和分享自己喜欢的技术,和网友分享知识也是一种提升.根据自己所发表的博客也能更加加深印象. 与此同时写博客也可以提高自己的写作能力(虽然不咋地),但我相信博客只会越写越有质量的. 博 ...