如何将PHPExcel数据导出实例操作步骤详细说明?
- 内容介绍
- 文章标签
- 相关推荐
本文共计987个文字,预计阅读时间需要4分钟。
php
use ExtendSpace\Excel;
class YourClass{ // 获取数据 public function get_list_by_sql($sql) { // ... }
public function getData() { $dataBillArr=$this->get_list_by_sql($sql);
// 替换数据中的'1'为'是'/'否' $dataBillArr=array_map(function($item) { return array_map(function($value) { return $value==='1' ? '是' : '否'; }, $item); }, $dataBillArr);
// 使用PHPExcel处理数据,得到的TRUE/FALSE // 这里直接返回TRUE/FALSE,不做替换 return $dataBillArr; }}
一、getdata.php
namespaceWebadmin\Model; useExtendSpace\Excel; …… 略 …… //取出数据 $dataBillArr=$this->get_list_bysql($sql); //替换数据中的0、1为是、否 //PHPExcel有内置的方法处理,但是得到的是TRUE/FALSE,这里自己处理吧 $this->_formatZero($dataBillArr,array('taxflag','payflag','removeflag')); //替换支付状态 foreach($dataBillArras$key=>$value){ switch($value['statustype']){ case'-1': $dataBillArr[$key]['statustype']='已取消'; break; case'-2': $dataBillArr[$key]['statustype']='已取消已退款'; break; case'0': $dataBillArr[$key]['statustype']='待付款'; break; case'1': $dataBillArr[$key]['statustype']='待发货'; break; case'2': $dataBillArr[$key]['statustype']='待收货'; break; case'3': $dataBillArr[$key]['statustype']='已完成'; break; case'10': $dataBillArr[$key]['statustype']='退货完成'; break; case'11': $dataBillArr[$key]['statustype']='退款完成'; break; default: $dataBillArr[$key]['statustype']='无'; break; } } //设置要导出的字段及对应的表头名称 $header=array( array('title'=>'平台订单号','field'=>'billcode','type'=>'string','autosize'=>true), array('title'=>'用户帐号','field'=>'username','type'=>'string','autosize'=>true), array('title'=>'用户昵称','field'=>'nickname'), array('title'=>'所属商家','field'=>'shopuser','autosize'=>true), array('title'=>'管易ERP单号','field'=>'erpsn','type'=>'string','autosize'=>true), array('title'=>'支付单号','field'=>'bspaycode','type'=>'string','autosize'=>true), array('title'=>'保税批次号','field'=>'bsbatchcode','type'=>'string','autosize'=>true), array('title'=>'是否跨境','field'=>'taxflag'), array('title'=>'订单状态','field'=>'statustype'), …… 略 …… ); //调用接口,执行Excel生成及导出操作 $filename='订单流水表_'.date('Y年m月d日_His',time()); Excel::export($dataBillArr,$header,$filename);
二、Excel.class.php
<?php namespaceExtendSpace; /** *ClassExcel通用Excel接口,处理导出、导出操作 *使用说明: *一、导入 *待续。。。 *二、导出 *useExtendSpace\Excel; *..... *Excel::export($dataArr,$header,$filename); * *@packageExtendSpace *@authorxxxxx2015-08-2714:07:14 *@version */ classExcel{ //privatestatic$objPHPExcel=null; /** *入口文件:导出Excel *@return */ publicstaticfunctionexport($data,$header,$filename='hms_excel_export'){ //引入PHPExcel类库 import('phpexcel.PHPExcel',dirname(__FILE__).'/','.php');//这里是TP特有,可直接用include或require //初始化设置 $objPHPExcel=new\PHPExcel(); $objPHPExcel->getProperties()->setCreator('test')->setLastModifiedBy('test');//这里设置中文乱码,还没解决 //->setTitle('这是标题') //->setSubject('这是什么') //->setDescription('这是描述') //->setKeywords('这是关键字') //->setCategory('这是目录么'); //var_dump($objPHPExcel->getProperties());exit; //获取当前要操作的活动工作表 $objActSheet=$objPHPExcel->getActiveSheet(); //写入表头 foreach($headeras$k=>$v){ $colIndex=self::_getHeaderIndex($k); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colIndex.'1',$v['title']); //列是否需要自动适应宽度 if(!empty($v['autosize'])){ $objActSheet->getColumnDimension($colIndex)->setAutoSize(true); } } //写入数据,从第二行开始,第一行是表头 $rowNum=2; foreach($dataas$rows){//遍历数据,获取一行 foreach($headeras$kk=>$vv){//单元格写入 $colIndex=self::_getHeaderIndex($kk); //是否指定单元格数据格式 if(!empty($vv['type'])){//是 switch($vv['type']){ case'number': $type=\PHPExcel_Cell_DataType::TYPE_NUMERIC;//数字 break; case'boolean': $type=\PHPExcel_Cell_DataType::TYPE_BOOL;//布尔值,0->FALSE;1->TRUE break; default: $type=\PHPExcel_Cell_DataType::TYPE_STRING;//字符串 break; } $objActSheet->setCellValueExplicit($colIndex.$rowNum,$rows[$vv['field']],$type); }else{//否,默认常规 $objActSheet->setCellValue($colIndex.$rowNum,$rows[$vv['field']]); } } $rowNum++; } //设置行高度rownum //$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(22); //设置字体和样式 $objActSheet->getDefaultStyle()->getFont()->setSize(12);//整体字号 $objActSheet->getStyle('A1:'.self::_getHeaderIndex(count($header)).'1')->getFont()->setBold(true);//列标题加粗 //设置工作表名称 $objActSheet->setTitle('Sheet1'); //设置header头参数 //header("Pragma:public"); //header("Expires:0"); //header("Cache-Control:must-revalidate,post-check=0,pre-check=0"); //header("Content-Type:application/force-download"); //header("Content-Type:application/vnd.ms-execl"); //header("Content-Type:application/octet-stream"); //header("Content-Type:application/download");; //header('Content-Disposition:attachment;filename="'.$savedFileName.'"'); //header("Content-Transfer-Encoding:binary"); //最终输出 $savedFileName=self::_iconv($filename).'.xls';//导出文件名+扩展名 header('Content-Type:application/vnd.ms-excel'); header('Content-Disposition:attachment;filename="'.$savedFileName.'"'); header('Cache-Control:max-age=0'); $objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); $objWriter->save('php://output'); //$objWriter->save($savedFileName); } /** *入口文件:导入Excel *@return */ publicstaticfunctionimport(){ //引入PHPExcel类库 //import('phpexcel.PHPExcel',dirname(__FILE__).'/','.php'); } privatestaticfunction_init(){ } /** *获取表头索引值,即:A,B,C...,大于 *@paramarray$header用于设置表头的数组 *@returnstring */ privatefunction_getHeaderIndex($num){ return\PHPExcel_Cell::stringFromColumnIndex($num); } /** *字符转换,避免乱码 *@paramstring$str待处理的字符 *@returnstring */ privatefunction_iconv($str){ returniconv('utf-8','gb2312',$str); } }
本文共计987个文字,预计阅读时间需要4分钟。
php
use ExtendSpace\Excel;
class YourClass{ // 获取数据 public function get_list_by_sql($sql) { // ... }
public function getData() { $dataBillArr=$this->get_list_by_sql($sql);
// 替换数据中的'1'为'是'/'否' $dataBillArr=array_map(function($item) { return array_map(function($value) { return $value==='1' ? '是' : '否'; }, $item); }, $dataBillArr);
// 使用PHPExcel处理数据,得到的TRUE/FALSE // 这里直接返回TRUE/FALSE,不做替换 return $dataBillArr; }}
一、getdata.php
namespaceWebadmin\Model; useExtendSpace\Excel; …… 略 …… //取出数据 $dataBillArr=$this->get_list_bysql($sql); //替换数据中的0、1为是、否 //PHPExcel有内置的方法处理,但是得到的是TRUE/FALSE,这里自己处理吧 $this->_formatZero($dataBillArr,array('taxflag','payflag','removeflag')); //替换支付状态 foreach($dataBillArras$key=>$value){ switch($value['statustype']){ case'-1': $dataBillArr[$key]['statustype']='已取消'; break; case'-2': $dataBillArr[$key]['statustype']='已取消已退款'; break; case'0': $dataBillArr[$key]['statustype']='待付款'; break; case'1': $dataBillArr[$key]['statustype']='待发货'; break; case'2': $dataBillArr[$key]['statustype']='待收货'; break; case'3': $dataBillArr[$key]['statustype']='已完成'; break; case'10': $dataBillArr[$key]['statustype']='退货完成'; break; case'11': $dataBillArr[$key]['statustype']='退款完成'; break; default: $dataBillArr[$key]['statustype']='无'; break; } } //设置要导出的字段及对应的表头名称 $header=array( array('title'=>'平台订单号','field'=>'billcode','type'=>'string','autosize'=>true), array('title'=>'用户帐号','field'=>'username','type'=>'string','autosize'=>true), array('title'=>'用户昵称','field'=>'nickname'), array('title'=>'所属商家','field'=>'shopuser','autosize'=>true), array('title'=>'管易ERP单号','field'=>'erpsn','type'=>'string','autosize'=>true), array('title'=>'支付单号','field'=>'bspaycode','type'=>'string','autosize'=>true), array('title'=>'保税批次号','field'=>'bsbatchcode','type'=>'string','autosize'=>true), array('title'=>'是否跨境','field'=>'taxflag'), array('title'=>'订单状态','field'=>'statustype'), …… 略 …… ); //调用接口,执行Excel生成及导出操作 $filename='订单流水表_'.date('Y年m月d日_His',time()); Excel::export($dataBillArr,$header,$filename);
二、Excel.class.php
<?php namespaceExtendSpace; /** *ClassExcel通用Excel接口,处理导出、导出操作 *使用说明: *一、导入 *待续。。。 *二、导出 *useExtendSpace\Excel; *..... *Excel::export($dataArr,$header,$filename); * *@packageExtendSpace *@authorxxxxx2015-08-2714:07:14 *@version */ classExcel{ //privatestatic$objPHPExcel=null; /** *入口文件:导出Excel *@return */ publicstaticfunctionexport($data,$header,$filename='hms_excel_export'){ //引入PHPExcel类库 import('phpexcel.PHPExcel',dirname(__FILE__).'/','.php');//这里是TP特有,可直接用include或require //初始化设置 $objPHPExcel=new\PHPExcel(); $objPHPExcel->getProperties()->setCreator('test')->setLastModifiedBy('test');//这里设置中文乱码,还没解决 //->setTitle('这是标题') //->setSubject('这是什么') //->setDescription('这是描述') //->setKeywords('这是关键字') //->setCategory('这是目录么'); //var_dump($objPHPExcel->getProperties());exit; //获取当前要操作的活动工作表 $objActSheet=$objPHPExcel->getActiveSheet(); //写入表头 foreach($headeras$k=>$v){ $colIndex=self::_getHeaderIndex($k); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colIndex.'1',$v['title']); //列是否需要自动适应宽度 if(!empty($v['autosize'])){ $objActSheet->getColumnDimension($colIndex)->setAutoSize(true); } } //写入数据,从第二行开始,第一行是表头 $rowNum=2; foreach($dataas$rows){//遍历数据,获取一行 foreach($headeras$kk=>$vv){//单元格写入 $colIndex=self::_getHeaderIndex($kk); //是否指定单元格数据格式 if(!empty($vv['type'])){//是 switch($vv['type']){ case'number': $type=\PHPExcel_Cell_DataType::TYPE_NUMERIC;//数字 break; case'boolean': $type=\PHPExcel_Cell_DataType::TYPE_BOOL;//布尔值,0->FALSE;1->TRUE break; default: $type=\PHPExcel_Cell_DataType::TYPE_STRING;//字符串 break; } $objActSheet->setCellValueExplicit($colIndex.$rowNum,$rows[$vv['field']],$type); }else{//否,默认常规 $objActSheet->setCellValue($colIndex.$rowNum,$rows[$vv['field']]); } } $rowNum++; } //设置行高度rownum //$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(22); //设置字体和样式 $objActSheet->getDefaultStyle()->getFont()->setSize(12);//整体字号 $objActSheet->getStyle('A1:'.self::_getHeaderIndex(count($header)).'1')->getFont()->setBold(true);//列标题加粗 //设置工作表名称 $objActSheet->setTitle('Sheet1'); //设置header头参数 //header("Pragma:public"); //header("Expires:0"); //header("Cache-Control:must-revalidate,post-check=0,pre-check=0"); //header("Content-Type:application/force-download"); //header("Content-Type:application/vnd.ms-execl"); //header("Content-Type:application/octet-stream"); //header("Content-Type:application/download");; //header('Content-Disposition:attachment;filename="'.$savedFileName.'"'); //header("Content-Transfer-Encoding:binary"); //最终输出 $savedFileName=self::_iconv($filename).'.xls';//导出文件名+扩展名 header('Content-Type:application/vnd.ms-excel'); header('Content-Disposition:attachment;filename="'.$savedFileName.'"'); header('Cache-Control:max-age=0'); $objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); $objWriter->save('php://output'); //$objWriter->save($savedFileName); } /** *入口文件:导入Excel *@return */ publicstaticfunctionimport(){ //引入PHPExcel类库 //import('phpexcel.PHPExcel',dirname(__FILE__).'/','.php'); } privatestaticfunction_init(){ } /** *获取表头索引值,即:A,B,C...,大于 *@paramarray$header用于设置表头的数组 *@returnstring */ privatefunction_getHeaderIndex($num){ return\PHPExcel_Cell::stringFromColumnIndex($num); } /** *字符转换,避免乱码 *@paramstring$str待处理的字符 *@returnstring */ privatefunction_iconv($str){ returniconv('utf-8','gb2312',$str); } }

