前言
为什么使用phpspreadsheet?
由于phpexcel不再维护,所以建议使用phpspreadsheet来导出exlcel,但是phpspreadsheet由于是个新的类库,所以只支持php7.1及以上的版本。
phpspreadsheet有哪些功能?
phpspreadsheet提供了丰富的api,包括单元格设置、文档属性、图片、日期、函数等,基本满足项目需求。
先介绍如何安装和使用常用的aip,实例代码放在最后,如果想直接使用可直接跳到第三部分完整实例。
一、安装
使用compose安装phpspreadsheet,在项目根目录下执行命令,phpspreadsheet会安装到/vendor/下
composer require phpoffice/phpspreadsheet
二、api使用
1、引用和实例化
使用composer安装完成后,可在项目中直接使用phpspreadsheet。
use phpoffice\phpspreadsheet\spreadsheet; use phpoffice\phpspreadsheet\writer\xlsx; use phpoffice\phpspreadsheet\iofactory; use phpoffice\phpspreadsheet\style\alignment; use phpoffice\phpspreadsheet\style\border; use phpoffice\phpspreadsheet\style\fill; use phpoffice\phpspreadsheet\worksheet\drawing; //实例化 $spreadsheet = new spreadsheet(); // 获取工作表 $sheet = $spreadsheet->getactivesheet();
这里引用了多个phpspreadsheet类,下面介绍每个类的作用
1、\spreadsheet:工作表
2、\writer\xlsx:导出excel
3、\iofactory:导出excel
4、\style\alignment:设置单元格文字水平、垂直居中
5、\style\border:设置单元格边框样式
6、\style\fill:设置单元格背景颜色
7、\worksheet\drawing:写入图片
2、 设置单元格的值
把单元格a1的值设置为药品不良反应事件报告表
$sheet->setcellvalue('a1', '药品不良反应事件报告表');
3、合并单元格
把单元格a1到n1合并
$sheet->mergecells('a1:n1');
4、拆分单元格
$sheet->unmergecells('a1:a4');
5、单元格文字样式
可以设置某一区域的单元格,也可以设置一行或一个单元格的样式
// 字体大小 $sheet->getstyle('a1')->getfont()->setsize(12); // 文字加粗 $sheet->getstyle('a1:n1')->getfont()->setbold(true); // 字体设置 $sheet->getstyle('a1:n1')->getfont()->setname('黑体');
6、单元格文字水平、垂直居中
给单元格a1中的文字设置水平、垂直居中。需要注意的是需要引用style\alignment
use phpoffice\phpspreadsheet\style\alignment; // 水平、垂直居中 $alignstyle = [ 'alignment' => [ 'horizontal' => alignment::horizontal_center, //水平居中 'vertical' => alignment::vertical_center, //垂直居中 ], ]; $sheet->getstyle('a1')->applyfromarray($alignstyle);
7、单元格边框样式
给单元格a4到b4加边框,可以单独设置上、下、左、右、全面边框,需要引用\style\border
use phpoffice\phpspreadsheet\style\border; // 边框样式 $borderstyle = [ 'borders' => [ 'outline' => [ 'borderstyle' => border::border_thin, 'color' => ['argb' => '000000'], ], ], ]; $sheet->getstyle('a4:b4')->applyfromarray($borderstyle);
8、设置单元格背景颜色
给单元格a4设置背景颜色,需要引用\style\fill
use phpoffice\phpspreadsheet\style\fill; $sheet->getstyle('a4')->getfill()->setfilltype(fill::fill_solid)->getstartcolor()->setrgb('d9d9d9');
9、设置行高
// 第一行行高设置为30 $sheet->getrowdimension(1)->setrowheight(30); // 设置默认行高 $sheet->getdefaultrowdimension()->setrowheight(20);
10、设置列宽
// 设置a列的列宽 $sheet->getcolumndimension('a')->setwidth(15); // 设置所有单元格的列宽 $sheet->getdefaultcolumndimension()->setwidth('15');
11、设置文字颜色
setrgb:颜色值带#号
setargb:颜色值不带#号
$sheet->getstyle('b3')->getfont()->getcolor()->setrgb('#aeeeee'); $sheet->getstyle('b3')->getfont()->getcolor()->setargb('ffff0000');
12、设置超链接
给单元格e6中的文字设置超链接
$sheet->setcellvalue('e6', '百度'); $sheet->getcell('e6')->gethyperlink()->seturl('www.baidu.com');
13、设置sheet的标题
// 设置sheet名称 $sheet->settitle('adr报告');
14、使用函数
sum:求和
verage:平均数
min:最小值
max:最大值
$sheet->setcellvalue('a3', '=sum(a1:a2)');
15、写入图片
往单元格里写入图片,需要引用\worksheet\drawing
use phpoffice\phpspreadsheet\worksheet\drawing; //写入图片 $drawing = new drawing(); $drawing->setname('logo')->setdescription('logo')->setpath('../files/1.jpg')->setheight(30)->setcoordinates('d6')->setoffsetx(50)->setoffsety(6); $drawing->setrotation(25); $drawing->getshadow()->setvisible(true); $drawing->getshadow()->setdirection(45); $drawing->setworksheet($sheet);
16、导出xlsx文件
需要引用iofactory
use phpoffice\phpspreadsheet\iofactory; // mime 协议,文件的类型,不设置,会默认html header('content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // mime 协议的扩展 header('content-disposition: attachment;filename="' . iconv("utf-8", "gb2312", $filename) . '.xlsx'); // 缓存控制 header('cache-control:max-age=0'); $write = iofactory::createwriter($spreadsheet, 'xlsx'); $write->save('php://output');
17、导出xls文件
需要引用iofactory
use phpoffice\phpspreadsheet\iofactory; // mime 协议,文件的类型,不设置,会默认html header('content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // mime 协议的扩展 $filename = date('y-m-d').'工作报告单'; header('content-disposition:attachment;filename='.$filename .'.xls'); // 缓存控制 header('cache-control:max-age=0'); $write = iofactory::createwriter($spreadsheet, 'xls'); $write->save('php://output');
三、完整实例
$adrinfo = array(); if (!empty($adrinfo)) { //实例化 $spreadsheet = new spreadsheet(); $filename = $adrinfo['name'].'_adr报告'.date('ymdhis').rand(10000, 99999); //导出文件名 $sheet = $spreadsheet->getactivesheet(); //样式 // 边框样式 $borderstyle = [ 'borders' => [ 'outline' => [ 'borderstyle' => border::border_thin, 'color' => ['argb' => '000000'], ], ], ]; // 水平、垂直居中 $alignstyle = [ 'alignment' => [ 'horizontal' => alignment::horizontal_center, //水平居中 'vertical' => alignment::vertical_center, //垂直居中 ], ]; 第一行 表头/ // 合并单元格 $sheet->mergecells('a1:n1'); // 设置表格第一行显示内容 $sheet->setcellvalue('a1', '药品不良反应/事件报告表'); $sheet->getstyle('a1')->getfont()->setsize(12); // 设置单元格字体大小 // 水平、垂直居中 $sheet->getstyle('a1')->applyfromarray($alignstyle); // 设置行高 $sheet->getrowdimension(1)->setrowheight(30); //设置列宽 $sheet->getdefaultcolumndimension()->setwidth('15'); // 加粗 $sheet->getstyle('a1:n1')->getfont()->setbold(true); // 设置sheet名称 $sheet->settitle($adrinfo['name'].'_adr报告'); 内容 // 第2行 $sheet->setcellvalue('a2','首次/跟踪:'); $sheet->setcellvalue('b2','首次报告'); // 设置单元格背景颜色 // $sheet->getstyle('a2')->getfill()->setfilltype(fill::fill_solid)->getstartcolor()->setrgb('d9d9d9'); // 设置行高 $sheet->getrowdimension('2')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a2:n2')->applyfromarray($alignstyle); // 第3行 $sheet->setcellvalue('a3','已知/新的:'); $sheet->setcellvalue('c3','一般/严重:'); $sheet->setcellvalue('e3',$adrinfo['qingkuang']); // 合并单元格 $sheet->mergecells('e3:n3'); $sheet->getrowdimension('3')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a3:d3')->applyfromarray($alignstyle); // 第4行 $sheet->setcellvalue('a4','患者姓名'); $sheet->setcellvalue('b4',$adrinfo['name']); $sheet->setcellvalue('c4','性别'); $sheet->setcellvalue('d4',$adrinfo['xingbie']); $sheet->setcellvalue('e4','出生日期'); $sheet->setcellvalue('f4',$adrinfo['nianyue']); $sheet->setcellvalue('g4','或年龄'); $sheet->setcellvalue('h4',$adrinfo['nianling']); $sheet->setcellvalue('i4','岁'); // 设置边框 $sheet->getstyle('a4:b4')->applyfromarray($borderstyle); $sheet->getstyle('c4:d4')->applyfromarray($borderstyle); $sheet->getstyle('e4:f4')->applyfromarray($borderstyle); $sheet->getstyle('g4:n4')->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension('4')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a4:n4')->applyfromarray($alignstyle); // 第5行 $sheet->setcellvalue('a5','民族:'); $sheet->setcellvalue('b5',$adrinfo['minzu']); $sheet->setcellvalue('c5','体重:'); $sheet->setcellvalue('d5',$adrinfo['tizhong']); $sheet->setcellvalue('e5','千克'); $sheet->setcellvalue('g5','联系方式:'); $sheet->setcellvalue('h5',$adrinfo['dianhua']); // 设置边框 $sheet->getstyle('a5:b5')->applyfromarray($borderstyle); $sheet->getstyle('c5:f5')->applyfromarray($borderstyle); $sheet->getstyle('g5:n5')->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension('5')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a5:n5')->applyfromarray($alignstyle); // 第6行 $sheet->setcellvalue('a6','原患疾病:'); $sheet->setcellvalue('g6','医院名称:'); $sheet->setcellvalue('h6',$adrinfo['member']['danwei']); $sheet->setcellvalue('k6','病历号/门诊号:'); $sheet->setcellvalue('l6',$adrinfo['jiuzhenhao']); // 设置边框 $sheet->getstyle('a6:f6')->applyfromarray($borderstyle); $sheet->getstyle('g6:j6')->applyfromarray($borderstyle); $sheet->getstyle('k6:n6')->applyfromarray($borderstyle); // 合并单元格 $sheet->mergecells('b6:f6'); $sheet->mergecells('h6:j6'); // 设置行高 $sheet->getrowdimension('6')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a6:n6')->applyfromarray($alignstyle); // 设置单元格背景颜色 // $sheet->getstyle('a6')->getfill()->setfilltype(fill::fill_solid)->getstartcolor()->setrgb('d9d9d9'); // 第7行 $sheet->setcellvalue('a7','既往药品不良反应/事件:'); // 设置边框 $sheet->getstyle('a7:b7')->applyfromarray($borderstyle); $sheet->getstyle('c7:n7')->applyfromarray($borderstyle); // 合并单元格 $sheet->mergecells('c7:n7'); // 设置行高 $sheet->getrowdimension('7')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a7:b7')->applyfromarray($alignstyle); // 设置单元格背景颜色 // $sheet->getstyle('a7')->getfill()->setfilltype(fill::fill_solid)->getstartcolor()->setrgb('d9d9d9'); // 第8行 $sheet->setcellvalue('a8','家族药品不良反应/事件:'); $sheet->setcellvalue('b8','不详'); // 设置边框 $sheet->getstyle('a8:n8')->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension('8')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a8:n8')->applyfromarray($alignstyle); // 设置单元格背景颜色 // $sheet->getstyle('a8')->getfill()->setfilltype(fill::fill_solid)->getstartcolor()->setrgb('d9d9d9'); // 第9行 $sheet->setcellvalue('a9','相关重要信息:'); $sheet->setcellvalue('b9',$adrinfo['huanzheqingkuang'].';过敏:'.$adrinfo['guomin']); // 设置边框 $sheet->getstyle('a9:n9')->applyfromarray($borderstyle); // 合并单元格 $sheet->mergecells('b9:n9'); // 设置行高 $sheet->getrowdimension('9')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a9')->applyfromarray($alignstyle); // 设置单元格背景颜色 // $sheet->getstyle('a9')->getfill()->setfilltype(fill::fill_solid)->getstartcolor()->setrgb('d9d9d9'); // 第10行 怀疑药品 $sheet->setcellvalue('b10','批准文号') ->setcellvalue('c10','商品名') ->setcellvalue('d10','通用名') ->setcellvalue('e10','生产厂家') ->setcellvalue('f10','生产批号') ->setcellvalue('g10','次剂量') ->setcellvalue('h10','给药途径') ->setcellvalue('i10','频次') ->setcellvalue('j10','开始用药日期') ->setcellvalue('k10','停止用药日期') ->setcellvalue('l10','用药原因') ->setcellvalue('m10','停药是否消失减轻') ->setcellvalue('n10','再次用药是否再出现'); // 统计共上传了多少条药品记录 $cc = count($adrinfo['yaowu']); // 下一项开始行序号 $i = 10+$cc; // 设置边框 $sheet->getstyle('a10')->applyfromarray($borderstyle); $sheet->getstyle('b10')->applyfromarray($borderstyle); $sheet->getstyle('c10')->applyfromarray($borderstyle); $sheet->getstyle('d10')->applyfromarray($borderstyle); $sheet->getstyle('e10')->applyfromarray($borderstyle); $sheet->getstyle('f10')->applyfromarray($borderstyle); $sheet->getstyle('g10')->applyfromarray($borderstyle); $sheet->getstyle('h10')->applyfromarray($borderstyle); $sheet->getstyle('i10')->applyfromarray($borderstyle); $sheet->getstyle('j10')->applyfromarray($borderstyle); $sheet->getstyle('k10')->applyfromarray($borderstyle); $sheet->getstyle('l10')->applyfromarray($borderstyle); $sheet->getstyle('m10')->applyfromarray($borderstyle); $sheet->getstyle('n10')->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension('10')->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a10:n10')->applyfromarray($alignstyle); if (!empty($adrinfo['yaowu'])) { // 合并单元格 $sheet->mergecells('a11:a'.$i); $sheet->setcellvalue('a11','怀疑药品'); // 水平、垂直居中 $sheet->getstyle('a11:a'.$i)->applyfromarray($alignstyle); // 设置边框 $sheet->getstyle('a11:a'.$i)->applyfromarray($borderstyle); $k = 0; foreach ($adrinfo['yaowu'] as $v) { $k++; $sheet->setcellvalue('b'.($k+10), str_replace('批准文号:','',$v[3])) //->setcellvalue('c'.($k+10), str_replace('药品','',$v[0])) ->setcellvalue('d'.($k+10), str_replace('药名:','',$v[0])) ->setcellvalue('e'.($k+10), str_replace('公司:','',$v[1])) ->setcellvalue('f'.($k+10), str_replace('产品批号:','',$v[2])) ->setcellvalue('g'.($k+10), str_replace('用量:','',$v[5])) ->setcellvalue('h'.($k+10), str_replace(array('如何用药:','/'),'',$v[7])) ->setcellvalue('i'.($k+10), str_replace(array('频次:','/'),'',$v[6])) ->setcellvalue('j'.($k+10), str_replace('开始服用该药的日期:','',$v[9])) ->setcellvalue('k'.($k+10), str_replace('停止服用该药的日期:','',$v[10])) ->setcellvalue('l'.($k+10), str_replace('为什么患者要使用这个药品:','',$v[8])) ->setcellvalue('m'.($k+10), str_replace('停药是否消失减轻:','',$v[12])) ->setcellvalue('n'.($k+10), str_replace('再次用药是否再出出现:','',$v[13])); // 设置边框 $sheet->getstyle('b'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('c'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('d'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('e'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('f'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('g'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('h'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('i'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('j'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('k'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('l'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('m'.($k+10))->applyfromarray($borderstyle); $sheet->getstyle('n'.($k+10))->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension(($k+10))->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('b'.($k+10).':n'.($k+10))->applyfromarray($alignstyle); } } // 并用药品 $sheet->setcellvalue('a'.($i+1),'并用药品'); // 合并单元格 $sheet->mergecells('a'.($i+1).':a'.($i+2)); // 水平、垂直居中 $sheet->getstyle('a'.($i+1).':a'.($i+2))->applyfromarray($alignstyle); // 设置边框 $sheet->getstyle('a'.($i+1).':a'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('b'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('c'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('d'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('e'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('f'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('g'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('h'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('i'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('j'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('k'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('l'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('m'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('n'.($i+1))->applyfromarray($borderstyle); $sheet->getstyle('b'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('c'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('d'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('e'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('f'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('g'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('h'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('i'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('j'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('k'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('l'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('m'.($i+2))->applyfromarray($borderstyle); $sheet->getstyle('n'.($i+2))->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension(($i+1))->setrowheight(22); $sheet->getrowdimension(($i+2))->setrowheight(22); // p($i+3); // 不良反应事件名称 $sheet->setcellvalue('a'.($i+3),'不良反应/事件名称:'); $sheet->setcellvalue('g'.($i+3),'不良反应/事件发生时间:'); $sheet->setcellvalue('h'.($i+3),$adrinfo['blfydate']); // 设置边框 $sheet->getstyle('a'.($i+3).':f'.($i+3))->applyfromarray($borderstyle); $sheet->getstyle('g'.($i+3).':n'.($i+3))->applyfromarray($borderstyle); // 合并单元格 $sheet->mergecells('b'.($i+3).':f'.($i+3)); // 设置行高 $sheet->getrowdimension(($i+3))->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a'.($i+3).':n'.($i+3))->applyfromarray($alignstyle); // 不良反应过程描述 $sheet->setcellvalue('a'.($i+4),'不良反应/事件过程描述(包括症状、体征、临床检验等)及处理情况(可附页):'); $jiancha_str = ''; if (!empty($adrinfo['jiancha'])) { $jiancha_str = "相关检查检验情况:\r\n"; foreach ($adrinfo['jiancha'] as $v){ $jiancha_str .= "检查日期:".str_replace("日期:","",$v[0]).";".$v[1].";".$v[2].";".$v[3].";".$v[4].";".$v[5].";\r\n"; } } $str = "描述:".$adrinfo['blfyxijie']."。\r\n".$jiancha_str; $sheet->setcellvalue('a'.($i+5),$str); $sheet->mergecells('a'.($i+5).':n'.($i+5)); // 设置行高 $sheet->getrowdimension($i+5)->setrowheight(50); // 设置边框 $sheet->getstyle('a'.($i+4).':n'.($i+5))->applyfromarray($borderstyle); // 水平、垂直居中 // $sheet->getstyle('a'.($i+5).':n'.($i+5))->applyfromarray($alignstyle); // 不良反应/事件的结果: $sheet->setcellvalue('a'.($i+6),'不良反应/事件的结果:'); // 设置边框 $sheet->getstyle('a'.($i+6).':n'.($i+6))->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension(($i+6))->setrowheight(22); // 合并单元格 // $sheet->mergecells('b'.($i+6).':n'.($i+6)); // 对原患疾病的影响 $sheet->setcellvalue('a'.($i+7),'对原患疾病的影响:'); // 设置边框 $sheet->getstyle('a'.($i+7).':n'.($i+7))->applyfromarray($borderstyle); // 合并单元格 $sheet->mergecells('b'.($i+7).':n'.($i+7)); // 设置行高 $sheet->getrowdimension(($i+7))->setrowheight(22); // 关联性评价 $sheet->setcellvalue('a'.($i+8),'关联性评价'); $sheet->mergecells('a'.($i+8).':a'.($i+9)); $sheet->setcellvalue('b'.($i+8),'报告人评价:'); $sheet->setcellvalue('k'.($i+8),'签名:'); $sheet->setcellvalue('l'.($i+8),$adrinfo['member']['name']); $sheet->setcellvalue('b'.($i+9),'报告单位评价:'); $sheet->setcellvalue('k'.($i+9),'签名:'); // 设置边框 $sheet->getstyle('a'.($i+8).':n'.($i+9))->applyfromarray($borderstyle); // 水平、垂直居中 $sheet->getstyle('a'.($i+8).':b'.($i+9))->applyfromarray($alignstyle); // 设置行高 $sheet->getrowdimension(($i+8))->setrowheight(22); $sheet->getrowdimension(($i+9))->setrowheight(22); // 报告人信息 $sheet->setcellvalue('a'.($i+10),'报告人信息'); $sheet->mergecells('a'.($i+10).':a'.($i+11)); $sheet->setcellvalue('b'.($i+10),'联系电话:'); $sheet->setcellvalue('c'.($i+10),$adrinfo['member']['tel']); $sheet->setcellvalue('f'.($i+10),'职业:'); $sheet->setcellvalue('i'.($i+10),'报告人科室:'); $sheet->setcellvalue('b'.($i+11),'电子邮箱:'); $sheet->setcellvalue('c'.($i+11),$adrinfo['member']['email']); $sheet->setcellvalue('f'.($i+11),'签名:'); $sheet->setcellvalue('g'.($i+11),$adrinfo['member']['name']); $sheet->setcellvalue('i'.($i+11),'报告日期:'); $sheet->setcellvalue('j'.($i+11),date('y-m-d',$adrinfo['createtime'])); // 设置边框 $sheet->getstyle('a'.($i+10).':n'.($i+11))->applyfromarray($borderstyle); // 水平、垂直居中 $sheet->getstyle('a'.($i+10).':n'.($i+11))->applyfromarray($alignstyle); // 设置行高 $sheet->getrowdimension(($i+10))->setrowheight(22); $sheet->getrowdimension(($i+11))->setrowheight(22); // 报告单位信息 $sheet->setcellvalue('a'.($i+12),'报告单位信息'); $sheet->setcellvalue('b'.($i+12),'单位名称:'); $sheet->setcellvalue('c'.($i+12),$adrinfo['member']['danwei']); $sheet->setcellvalue('f'.($i+12),'联系人:'); $sheet->setcellvalue('i'.($i+12),'电话:'); // 设置边框 $sheet->getstyle('a'.($i+12).':n'.($i+12))->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension(($i+12))->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a'.($i+12).':n'.($i+12))->applyfromarray($alignstyle); // 备注 $sheet->setcellvalue('a'.($i+13),'备注'); $sheet->setcellvalue('b'.($i+13),$adrinfo['qitayaowu']); // 设置边框 $sheet->getstyle('a'.($i+13).':n'.($i+13))->applyfromarray($borderstyle); // 设置行高 $sheet->getrowdimension(($i+13))->setrowheight(22); // 水平、垂直居中 $sheet->getstyle('a'.($i+13).':n'.($i+13))->applyfromarray($alignstyle); ob_end_clean(); //清除缓冲区,避免乱码 header('content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // mime 协议的扩展 header('content-disposition: attachment;filename="' . iconv("utf-8", "gb2312", $filename) . '.xlsx'); // 缓存控制 header('cache-control:max-age=0'); $write = iofactory::createwriter($spreadsheet, 'xlsx'); $write->save('php://output');
四、效果图
以上就是thinkphp5+phpspreadsheet实现批量导出数据的详细内容,更多关于thinkphp5 phpspreadsheet导出数据的资料请关注代码网其它相关文章!
发表评论