ThinkPHP5+PhpSpreadsheet实现批量导出数据

ThinkPHP5+PhpSpreadsheet实现批量导出数据

前言

为什幺使用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 协议,文件的类型,不设置,会默认htmlheader('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 协议,文件的类型,不设置,会默认htmlheader('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导出数据的资料请关注8b8.cn其它相关文章!

ThinkPHP5+PhpSpreadsheet实现批量导出数据