您好,欢迎访问一九零五行业门户网

php 基于phpexcel制作的导出excel类,phpexcelexcel_PHP教程

php 基于phpexcel制作的导出excel类,phpexcelexcel最近要写个项目,由于项目中导出excel太多,因此写个类便于使用。
filename = '文件名称';//设置文件名称,默认为时间戳*$excel->format = '2007';//文件类型,默认为2007,其他为excel5*$record = array( 'delkey'=>array('id','addtime','status'),//如果数据$data中有不需要显示的列,可以在此说明。删除不需要导出的键值 'sort' =>array( 'keyname'=>array('subjectname','flag'),//按keyname列排序,如果不存在则不排序。 //'reorder'=>'desc',//排序方式,desc为倒序,asc为正序。如果keyname存在则排序keyname,如果不存在则按数组的键名排序,如果reorder不存在则不排序 ),//排序 如果sort存在则排序,否则不排序,如果keyname存在则按设置排序,如果不存在则按字符排序,如果reorder不存在或为空或为des则正序,等于desc为倒序。 'excelstyle' =>array( 'setname'=>'arial',//字体样式 'setsize'=>'12',//字体大小 ),//表格全局样式 'title' =>array('tablename'=>'学科列表','center'=>true,'direction'=>'right','merge'=>'2','setsize'=>'30'),//标题,center垂直,direction为合并方向。right,left,up,down。 merge为合并几个单元格,setsize为字体大小 'data' =>array( array('tablename'=>'科目名称','width'=>'30','setname'=>'宋体','setsize'=>'20','background'=>'red','textcolor'=>'white','bold'=>true,'underline'=>true,'bordercolor'=>'cyan','center'=>true,), array('tablename'=>'学科','width'=>'50','center'=>true),//颜色表是:black,white,red,green,blue,yellow,magenta,cyan ),//表名称 tablename为名称,width为表格宽度,setname为字体样式,background为背景颜色,textcolor为字体颜色,bold为加粗,underline为下划线,bordercolor为边框颜色. 'merge' =>array( //'flag'=>array('keyword'=>'初','direction'=>'right','merge'=>'2'),merge的键值为需要处理数据数组的键值,keyword为如果存在此关键字才执行其他样式操作,如果keyword不存在则执行所有键值为flag的单元格。 'all'=>array('width'=>'30','setname'=>'宋体','setsize'=>'20','background'=>'red','textcolor'=>'white','bold'=>true,'underline'=>true,'bordercolor'=>'cyan','center'=>true,), ),//);//导出配置*$excel->export($record,$data);//$record为导出配置,$data为数据库的数据,$data可以为数组,也可以为对象。****/$address = dirname(dirname(__file__)).'/phpexcel';include $address.'/phpexcel.class.php';include $address.'/phpexcel/writer/excel2007.php';include $address.'/phpexcel/writer/excel5.php';include $address.'/phpexcel/iofactory.php';/*****************************生成excel文档。*/class excelc { public $format = '2007';//转换格式,默认为2007版本,其他版本,请输入不是2007的数字 public $filename;//文件名称默认为时间戳。 private $objexcel; private $letters; public function __construct() { $this->filename = time(); $this->filetitle = '导出数据'; $this->objexcel = new phpexcel(); $this->letters = $this->letter(); } //导出excel的属性 private function attribute(){ $this->objexcel->getproperties()->setcreator(力达行有限公司);//创建人 $this->objexcel->getproperties()->setlastmodifiedby(力达行有限公司);//最后修改人 $this->objexcel->getproperties()->settitle(导出数据);//标题 $this->objexcel->getproperties()->setsubject(导出数据);//题目 $this->objexcel->getproperties()->setdescription(数据导出);//描述 $this->objexcel->getproperties()->setkeywords(office 导出);//关键字 $this->objexcel->getproperties()->setcategory(excel);//种类 } //设置表(如果只有一个sheet可以忽略该函数,将默认创建。) private function sheet(){ $this->objexcel->setactivesheetindex(0);//设置当前的表 $this->objexcel->getactivesheet()->settitle('excel');//设置表名称。 } /*************************** *导出excel *@attr $record为表头及样式设置 *@attr $data为需要导出的数据 */ public function export($record=array(),$data=array()){ if(!$data)return false; if(!is_array($record))return false;//表样式及其他设置 //处理获取到的数据 $data = $this->manidata($record,$data); //获取整体样式。 $this->exceldata($record,$data); //$this->objexcel->getactivesheet()->setcellvalue('a1', '季度'); $this->down();//导出下载 } /* *处理表格 */ private function exceldata(&$record,&$data){ $this->attribute();//设置属性 $this->sheet();//设置表 $this->whole($record);//设置整体样式 $this->tableheader($record);//设置表格头。 $this->tablecontent($record,$data);//设置表格 $this->exceltitle($record,2);//设置标题 } /* *设置表格整体样式 */ private function whole(&$record){ if(!array_key_exists('excelstyle',$record))return false; $excelstyle = $record['excelstyle']; $default = $this->objexcel->getdefaultstyle(); if(array_key_exists('setname',$excelstyle)) $default->getfont()->setname($excelstyle['setname']);//设置字体样式 if(array_key_exists('setsize',$excelstyle)) $default->getfont()->setsize($excelstyle['setsize']);//设置字体大小 } /* *设置标题 */ private function exceltitle($record,$num){ $titlel = $this->letters[0]; if(!array_key_exists('title',$record))return false; $this->appointstyle($titlel ,1,$record['title']); } /* *设置表格头。 */ private function tableheader($record){ if(!array_key_exists('data',$record))return false; $objexcel = $this->objexcel; $letters = $this->letters; if(!is_array($record['data']))return false; $i = 0; $hang = 2; foreach($record['data'] as $k=>$v){ $this->appointstyle($letters[$i],$hang,$v); $i++; } } private function setcellvalue($letter,$data){ if(@$data) $this->objexcel->getactivesheet()->setcellvalue($letter, $data);//填充值 return $this; } private function getcolumndimension($letter,$data){ if(@$data) $this->objexcel->getactivesheet()->getcolumndimension($letter)->setwidth($data);//设置宽度 return $this; } private function setname($letter,$data){ if(@$data) $this->objexcel->getactivesheet()->getstyle($letter)->getfont()->setname($data);//设置字体 return $this; } private function setsize($letter,$data){ if(@$data) $this->objexcel->getactivesheet()->getstyle($letter)->getfont()->setsize($data);//设置字体大小 return $this; } private function background($letter,$data){ if(@$data){ $this->objexcel->getactivesheet()->getstyle($letter)->getfill()->getstartcolor()->setargb($this->backcolor($data)); $this->objexcel->getactivesheet()->getstyle($letter)->getfill()->setfilltype(phpexcel_style_fill::fill_solid);//设置背景色样式,无样式将不显示背景色。 } return $this; } private function textcolor($letter,$data){ if(@$data){ $this->objexcel->getactivesheet()->getstyle($letter)->getfont()->getcolor()->setargb($data);//字体颜色 } return $this; } private function setbold($letter,$data){ if(@$data){ $this->objexcel->getactivesheet()->getstyle($letter)->getfont()->setbold(true);//加粗 } return $this; } private function setunderline($letter,$data){ if(@$data){ $this->objexcel->getactivesheet()->getstyle($letter)->getfont()->setunderline(phpexcel_style_font::underline_single);//下划线 } return $this; } private function border($letter,$data){ if(@$data){ $stylethinblackborderoutline = array( 'borders' => array ( 'outline' => array ( 'style' => phpexcel_style_border::border_thin, //设置border样式 'color' => array ('argb' => $data), //设置border颜色 ), ), ); $this->objexcel->getactivesheet()->getstyle($letter)->applyfromarray($stylethinblackborderoutline); } return $this; } /* *合并 */ private function mergecells($letters,$hang,$direction,$merge){ $merge = $merge-1; if($merge > 0 && $direction){ //print_r($this->letters); $l = array_flip($this->letters); $ln = $l[$letters]; switch ($direction) { case 'left': $signal = $this->letters[($ln-$merge)].$hang.':'.$letters.$hang; break; case 'right': $signal = $letters.$hang.':'.$this->letters[($ln+$merge)].$hang; break; case 'up': $signal = $letters.($hang-$merge).':'.$letters.$hang; break; case 'down': $signal = $letters.$hang.':'.$letters.($hang+$merge); break; default: $signal = ''; } if($signal){ $this->objexcel->getactivesheet()->mergecells($signal); } } return $this; } /* *垂直居中 */ private function setvertical($letter,$data){ if($data){ $this->objexcel->getactivesheet()->getstyle($letter)->getalignment()->setvertical(phpexcel_style_alignment::vertical_center); $this->objexcel->getactivesheet()->getstyle($letter)->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center); } return $this; } /* *设置颜色 */ private function backcolor($color){ $array = array( 'black' => 'ff000000', // system colour #1 - black 'white' => 'ffffffff', // system colour #2 - white 'red' => 'ffff0000', // system colour #3 - red 'green' => 'ff00ff00', // system colour #4 - green 'blue' => 'ff0000ff', // system colour #5 - blue 'yellow' => 'ffffff00', // system colour #6 - yellow 'magenta' => 'ffff00ff', // system colour #7- magenta 'cyan' => 'ff00ffff', // system colour #8- cyan ); if(array_key_exists($color,$array)){ return $array[$color]; } else { return false; } } /* *设置表 */ private function tablecontent(&$record,&$data){ $objexcel = $this->objexcel; $letters = $this->letters; if(array_key_exists('merge',$record)) $merge = $record['merge']; else $merge = ''; $hang = 2; foreach($data as $k=>$v){ $i=0; $hang++; foreach($v as $kk=>$vv){ $this->setcellvalue($letters[$i].$hang, $vv);//设置内容 $this->appoint($kk,$vv,$letters[$i],$hang,$merge); $i++; } } } /* *设置表指定样式 */ private function appoint($kk,$vv,$letters,$hang,$merge){ if(!$merge)return false; if(array_key_exists($kk,$merge)){ $v = $merge[$kk]; if(array_key_exists('keyword',$v)){ if(strpos($vv,$v['keyword']) > -1){ $this->appointstyle($letters,$hang,$v); } } else { $this->appointstyle($letters,$hang,$v); } } else if(array_key_exists('all',$merge)){ $v = $merge['all']; if(array_key_exists('keyword',$v)){ if(strpos($vv,$v['keyword']) > -1){ $this->appointstyle($letters,$hang,$v); } } else { $this->appointstyle($letters,$hang,$v); } } } /* *终极样式 */ private function appointstyle($letters,$hang,$v){ $this ->setcellvalue($letters.$hang,@$v['tablename']) ->getcolumndimension($letters,@$v['width']) ->setname($letters.$hang,@$v['setname']) ->setsize($letters.$hang,@$v['setsize']) ->background($letters.$hang,@$v['background']) ->textcolor($letters.$hang,$this->backcolor(@$v['textcolor'])) ->setbold($letters.$hang,@$v['bold']) ->setunderline($letters.$hang,@$v['underline']) ->border($letters.$hang,$this->backcolor(@$v['bordercolor'])) ->mergecells($letters,$hang,@$v['direction'],@$v['merge']) ->setvertical($letters.$hang,@$v['center']); } /* *应为字母列表 */ public function letter(){ return array('a','b','c','d','f','g','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','h','y','z'); } /**************************** *处理数据,排序及删除字段 */ private function manidata($record,$data){ if(!$data)return false; if(!is_array($record))return false;//表样式及其他设置 $data = $this->objecttoarray($data);//对象转数组 $delkey = (array_key_exists('delkey',$record))?$record['delkey']:'';//是否删除关键字 $sort = (array_key_exists('sort',$record))?$record['sort']:'';//是否排序 $data = $this->delsort($data,$delkey,$sort); return $data; } /**************************** *对象转数组 */ private function objecttoarray($data){ if(!$data)return false; $data = (array)$data; foreach($data as $k=>$v){ if(is_object($v) || is_array($v)){ $data[$k] = (array)$this->objecttoarray($v); } } return $data; } /**************************** *删除键值,并排序 */ private function delsort($data,$delkey='',$sort=''){ if(!$data)return false; $array = array(); foreach($data as $k=>$v){ //删除数据中的某个键值 $deldata = $this->deldata($v,$delkey); //按设定键值排序 $sortdata = $this->sortdata($deldata,$sort); $array[$k] = $sortdata; } return $array; } /**************************** *删除键值 */ public function deldata($data,&$delkey){ if($delkey){ foreach($delkey as $delval){ if(array_key_exists($delval,$data))//判断键值是否存在 unset($data[$delval]);//清除键名。 } } return $data; } /**************************** *键值排序 */ public function sortdata($data,&$sort){ $array = array(); if($sort){ if(array_key_exists('keyname',$sort)){ $keyname = $sort['keyname']; if(array_key_exists('reorder',$sort)){ if($sort['reorder'] == 'desc'){ krsort($keyname); } else if($sort['reorder'] == 'asc'){ ksort($keyname); } } foreach($keyname as $vn){ $array[$vn] = (array_key_exists($vn,$data))?$data[$vn]:''; } } else { if(array_key_exists('reorder',$sort)){ if($sort['reorder'] == 'desc'){ krsort($data); } else if($sort['reorder'] == 'asc'){ ksort($data); } $array = $data; } } } return $array; } //导出下载 private function down(){ if($this->format == '2007'): header('content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $excel = 'excel2007'; else: header('content-type: application/vnd.ms-excel'); $excel = 'excel5'; endif; header(content-disposition: attachment; filename=\$this->filename\); header('cache-control: max-age=0'); $objwriter = phpexcel_iofactory::createwriter($this->objexcel, $excel); $objwriter->save('php://output'); }}
想用php导出excel表格,但是php环境是51*的,没办法用phpexcel开源类,有啥办法?
你好,其实非常简单的问题,就是将要打印的页面的头设置为!
header(content-type:application/vnd.ms-excel);
header(content-disposition:filename=php100.xls);
这样,浏览器就直接下载该文件。将文件里面的
内容
就直接放在excel的表格里面了!
详情,请参考php100的教程。php100对这个问题有一个视频教程。
下载地址: www.php100.com/...0.html
 phpexcel生成excel不可以读取
总结 php导出excel php导入excel phpexcel使用说明 phpexcel使用手册2009/03/06 上午 02:37方法一:特点,简单,省心,
方法二: 引用google code中推荐的小类库(大体同方法一,比较复杂点)
code.google.com/p/php-excel/downloads/list
方法三: phpexcel 类库,功能强大,支持win excel2003 ,win excel2007.
www.codeplex.com/phpexcel
//设置phpexcel类库的include path
set_include_path('.'. path_separator .
'd:\zeal\php_libs' . path_separator .
get_include_path());
/**
* 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要
* 打开对应行的注释。
* 如果使用 excel5 ,输出的内容应该是gbk编码。
*/
require_once 'phpexcel.php';
// uncomment
////require_once 'phpexcel/writer/excel5.ph......余下全文>>
http://www.bkjia.com/phpjc/884175.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/884175.htmltecharticlephp 基于phpexcel制作的导出excel类,phpexcelexcel 最近要写个项目,由于项目中导出excel太多,因此写个类便于使用。 ?php/**@使用方法。*引入类库...
其它类似信息

推荐信息