利用PHPExcel将数据导出到xls格式的excel文件
什么是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');//设置边框颜色
复制代码
更多资料请百度一下,如有问题欢迎指正!
上一篇: php中的static