当前位置: 代码网 > it编程>编程语言>Php > ThinkPHP5+PhpSpreadsheet实现批量导出数据

ThinkPHP5+PhpSpreadsheet实现批量导出数据

2024年11月03日 Php 我要评论
前言为什么使用phpspreadsheet?由于phpexcel不再维护,所以建议使用phpspreadsheet来导出exlcel,但是phpspreadsheet由于是个新的类库,所以只支持php

前言

为什么使用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导出数据的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com