目录
- 前言
- 一、安装
- 二、API使用
- 三、完整实例
- 四、效果图
前言
为什么使用PhpSpreadsheet?
由于PHPExcel不再维护,所以建议使用PhpSpreadsheet来导出exlcel,但是PhpSpreadsheet由于是个新的类库,所以只支持PHP7.1及以上的版本。
PhpSpreadsheet有哪些功能?
PhpSpreadsheet提供了丰富的API,包括单元格设置、文档属性、图片、日期、函数等,基本满足项目需求。
先介绍如何安装和使用常用的AIP,实例代码放在最后,如果想直接使用可直接跳到第三部分完整实例。
一、安装
使用compose安装PhpSpreadsheet,在项目根目录下执行命令,PhpSpreadsheet会安装到/vendor/下
composer require phpoffice/phpspreadsheet
二、API使用
1、引用和实例化
使用composer安装完成后,可在项目中直接使用PhpSpreadsheet。
use PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx; use PhpOfficePhpSpreadsheetIOFactory; use PhpOfficePhpSpreadsheetStyleAlignment; use PhpOfficePhpSpreadsheetStyleBorder; use PhpOfficePhpSpreadsheetStyleFill; use PhpOfficePhpSpreadsheetWorksheetDrawing; //实例化 $spreadsheet = new Spreadsheet(); // 获取工作表 $sheet = $spreadsheet-getActiveSheet();
这里引用了多个PhpSpreadsheet类,下面介绍每个类的作用
1、Spreadsheet:工作表
2、WriterXlsx:导出excel
3、IOFactory:导出excel
4、StyleAlignment:设置单元格文字水平、垂直居中
5、StyleBorder:设置单元格边框样式
6、StyleFill:设置单元格背景颜色
7、WorksheetDrawing:写入图片
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中的文字设置水平、垂直居中。需要注意的是需要引用StyleAlignment
use PhpOfficePhpSpreadsheetStyleAlignment;
// 水平、垂直居中
$alignstyle = [
'alignment' = [
'horizontal' = Alignment::HORIZONTAL_CENTER, //水平居中
'vertical' = Alignment::VERTICAL_CENTER, //垂直居中
],
];
$sheet-getStyle('A1')-applyFromArray($alignstyle);
7、单元格边框样式
给单元格A4到B4加边框,可以单独设置上、下、左、右、全面边框,需要引用StyleBorder
use PhpOfficePhpSpreadsheetStyleBorder;
// 边框样式
$borderstyle = [
'borders' = [
'outline' = [
'borderStyle' = Border::BORDER_THIN,
'color' = ['argb' = '000000'],
],
],
];
$sheet-getStyle('A4:B4')-applyFromArray($borderstyle);
8、设置单元格背景颜色
给单元格A4设置背景颜色,需要引用StyleFill
use PhpOfficePhpSpreadsheetStyleFill;
$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、写入图片
往单元格里写入图片,需要引用WorksheetDrawing
use PhpOfficePhpSpreadsheetWorksheetDrawing;
//写入图片
$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 PhpOfficePhpSpreadsheetIOFactory;
// 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 PhpOfficePhpSpreadsheetIOFactory;
// 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 = "相关检查检验情况:rn";
foreach ($adrinfo['jiancha'] as $v){
$jiancha_str .= "检查日期:".str_replace("日期:","",$v[0]).";".$v[1].";".$v[2].";".$v[3].";".$v[4].";".$v[5].";rn";
}
}
$str = "描述:".$adrinfo['blfyxijie']."。rn".$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');
四、效果图
