欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用PHPExcel将数据导出到xls格式的excel文件

程序员文章站 2022-03-09 22:00:38
在开发某地的经营许可证管理的时候需要将数据导出打excel文件,虽然一年前做某集团的erp的时候用到过一次导入和导出,但是那时候太忙没时间写博客,一年过去了我也忘的差不多了,所以趁着今天将此次的使用...
在开发某地的经营许可证管理的时候需要将数据导出打excel文件,虽然一年前做某集团的erp的时候用到过一次导入和导出,但是那时候太忙没时间写博客,一年过去了我也忘的差不多了,所以趁着今天将此次的使用写到博客中,作为以后开发的一个参考,免得再次使用的时候需要导出找资料,也给其他同行一个参考。作者:dragondean,博客地址:https://www.cnblogs.com/dragondean/

 

什么是phpexcel?

phpexcel 是用来操作office excel 文档的一个php类库,它基于微软的openxml标准和php语言。可以使用它来读取、写入不同格式的电子表格,如 excel (biff) .xls, excel 2007 (officeopenxml) .xlsx, csv, libre/openoffice calc .ods, gnumeric, pdf, html等等。

下载phpexcel

phpexcel的官方网站地址是:https://phpexcel.codeplex.com/,我们可以从中下载需要的文件。我下载的是1.8的版本。下载之后将他解压到网站的根目录。

 

开发背景说明

此次开发是使用的thinkphp框架,根据查询的条件导出所有的内容。另外有一个导入的功能,我将另外撰文。更详细的说明请参考代码部分的注释。

 

导出部分的代码如下:

复制代码

//导入相关文件

require_once $_server['document_root'].'/phpexcel/classes/phpexcel.php';

//实例化

$phpexcel = new phpexcel();

//设置比标题

$phpexcel->getactivesheet()->settitle('毅创科技 提示技术支持');

//设置表头

$phpexcel->getactivesheet() ->setcellvalue('a1','餐证字')

                            ->setcellvalue('b1','单位名称')

                            ->setcellvalue('c1','法定代表人')

                            ->setcellvalue('d1','城市')

                            ->setcellvalue('e1','地区')

                            ->setcellvalue('f1','地址')

                            ->setcellvalue('g1','类别')

                            ->setcellvalue('h1','备注(经营范围)')

                            ->setcellvalue('i1','发证机关')

                            ->setcellvalue('j1','起始日期')

                            ->setcellvalue('k1','终止日期')

                            ->setcellvalue('l1','食品安全管理人')

                            ->setcellvalue('m1','是否执证')

                            ->setcellvalue('n1','发证日期')

                            ->setcellvalue('o1','联系电话')

                            ->setcellvalue('p1','使用面积')

                            ->setcellvalue('q1','从业人员数')

                            ->setcellvalue('r1','变更情况')

                            ->setcellvalue('s1','持证情况')

                            ->setcellvalue('t1','所属监管科室');

//从取得需要导出的数据

$list=$db->where($where)->select();

//用foreach从第二行开始写数据,因为第一行是表头

$i=2;

foreach($list as $val){

    $phpexcel->getactivesheet() ->setcellvalue('a'.$i,'吉'.$val['czz_nian'].$val['czz_hao'])

                            ->setcellvalue('b'.$i, $val['danwei'])

                            ->setcellvalue('c'.$i, $val['faren'])

                            ->setcellvalue('d'.$i, $val['dz_chengshi'])

                            ->setcellvalue('e'.$i, $val['dz_diqu'])

                            ->setcellvalue('f'.$i, $val['dizhi'])

                            ->setcellvalue('g'.$i, $val['leibie'])

                            ->setcellvalue('h'.$i, $val['beizhu'])

                            ->setcellvalue('i'.$i, $val['fazheng'])

                            ->setcellvalue('j'.$i, $val['qs_nian'].'-'.$val['qs_yue'].'-'.$val['qs_ri'])

                            ->setcellvalue('k'.$i, $val['zz_nian'].'-'.$val['zz_yue'].'-'.$val['zz_ri'])

                            ->setcellvalue('l'.$i, $val['anquan'])

                            ->setcellvalue('m'.$i, $val['zhizheng'])

                            ->setcellvalue('n'.$i, $val['fz_nian'].'-'.$val['fz_yue'].'-'.$val['fz_ri'])

                            ->setcellvalue('o'.$i, $val['dianhua'])

                            ->setcellvalue('p'.$i, $val['shiyongmianji'])

                            ->setcellvalue('q'.$i, $val['renshu'])

                            ->setcellvalue('r'.$i, $val['biangeng'])

                            ->setcellvalue('s'.$i, $val['chizheng'])

                            ->setcellvalue('t'.$i, $val['keshi']);

    $i++;

}

 

$obj_writer = phpexcel_iofactory::createwriter($phpexcel,'excel5');

$filename ='export'. date('y-m-d').".xls";//文件名

 

//设置header

header("content-type: application/force-download"); 

header("content-type: application/octet-stream"); 

header("content-type: application/download"); 

header('content-disposition:inline;filename="'.$filename.'"'); 

header("content-transfer-encoding: binary"); 

header("last-modified: " . gmdate("d, d m y h:i:s") . " gmt"); 

header("cache-control: must-revalidate, post-check=0, pre-check=0"); 

header("pragma: no-cache"); 

$obj_writer->save('php://output');//输出

die();//种植执行

复制代码

导出的文件预览:

 

 

其他的相关属性设置参考(来源于网络资料)

复制代码

//设置文档基本属性       

$objprops = $phpexcel->getproperties();       

$objprops->setcreator("章贡区医疗保险局");       

$objprops->setlastmodifiedby("章贡区医疗保险局");       

$objprops->settitle("章贡区医疗保险局职工月增减变动报表");       

$objprops->setsubject("章贡区医疗保险局职工月增减变动报表");       

$objprops->setdescription("章贡区医疗保险局职工月增减变动报表");       

$objprops->setkeywords("章贡区医疗保险局职工月增减变动报表");       

$objprops->setcategory("变动报表"); 

复制代码

phpexcel如何合并/分离单元格

$objphpexcel->getactivesheet()->mergecells('a18:e22'); 

$objphpexcel->getactivesheet()->unmergecells('a18:e22'); 

phpexcel如何设置列宽/行高

$objphpexcel->getactivesheet()->getcolumndimension('b')->setautosize(true); 

$objphpexcel->getactivesheet()->getcolumndimension('d')->setwidth(12); 

$objphpexcel->getactivesheet()->getrowdimension(3)->setrowheight(16); 

phpexcel如何设置样式

复制代码

$objstylea1 = $phpexcel->getactivesheet()->getstyle('a1');       

$objstylea1->getalignment()->sethorizontal(phpexcel_style_alignment::horizontal_center);   //设置水平对其

$objstylea1->getalignment()->setvertical(phpexcel_style_alignment::vertical_center);    //设置垂直对其

$objfonta1 = $objstylea1->getfont(); 

$objfonta1->setname('宋体'); 

$objfonta1->setsize(18); $objfonta1->setbold(true);

复制代码

 

 

phpexcel如何设置边框

复制代码

$objactsheet->getstyle('a2')->getborders()->gettop()->setborderstyle(phpexcel_style_border::border_thin );   

$objactsheet->getstyle('a2')->getborders()->getleft()->setborderstyle(phpexcel_style_border::border_thin );   

$objactsheet->getstyle('a2')->getborders()->getright()->setborderstyle(phpexcel_style_border::border_thin );   

$objactsheet->getstyle('a2')->getborders()->getbottom()->setborderstyle(phpexcel_style_border::border_thin );  

$objphpexcel->getactivesheet()->getstyle('d13')->getborders()->getleft()->getcolor()->setargb('ff993300');//设置边框颜色

复制代码

更多资料请百度一下,如有问题欢迎指正!