ThinkPHP5+PhpSpreadsheet實(shí)現(xiàn)批量導(dǎo)出數(shù)據(jù)
前言
為什么使用PhpSpreadsheet?
由于PHPExcel不再維護(hù),所以建議使用PhpSpreadsheet來(lái)導(dǎo)出exlcel,但是PhpSpreadsheet由于是個(gè)新的類(lèi)庫(kù),所以只支持PHP7.1及以上的版本。
PhpSpreadsheet有哪些功能?
PhpSpreadsheet提供了豐富的API,包括單元格設(shè)置、文檔屬性、圖片、日期、函數(shù)等,基本滿(mǎn)足項(xiàng)目需求。
先介紹如何安裝和使用常用的AIP,實(shí)例代碼放在最后,如果想直接使用可直接跳到第三部分完整實(shí)例。
一、安裝
使用compose安裝PhpSpreadsheet,在項(xiàng)目根目錄下執(zhí)行命令,PhpSpreadsheet會(huì)安裝到/vendor/下
composer require phpoffice/phpspreadsheet
二、API使用
1、引用和實(shí)例化
使用composer安裝完成后,可在項(xiàng)目中直接使用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; //實(shí)例化 $spreadsheet = new Spreadsheet(); // 獲取工作表 $sheet = $spreadsheet->getActiveSheet();
這里引用了多個(gè)PhpSpreadsheet類(lèi),下面介紹每個(gè)類(lèi)的作用
1、\Spreadsheet:工作表
2、\Writer\Xlsx:導(dǎo)出excel
3、\IOFactory:導(dǎo)出excel
4、\Style\Alignment:設(shè)置單元格文字水平、垂直居中
5、\Style\Border:設(shè)置單元格邊框樣式
6、\Style\Fill:設(shè)置單元格背景顏色
7、\Worksheet\Drawing:寫(xiě)入圖片
2、 設(shè)置單元格的值
把單元格A1的值設(shè)置為藥品不良反應(yīng)事件報(bào)告表
$sheet->setCellValue('A1', '藥品不良反應(yīng)事件報(bào)告表');3、合并單元格
把單元格A1到N1合并
$sheet->mergeCells('A1:N1');4、拆分單元格
$sheet->unmergeCells('A1:A4');5、單元格文字樣式
可以設(shè)置某一區(qū)域的單元格,也可以設(shè)置一行或一個(gè)單元格的樣式
// 字體大小
$sheet->getStyle('A1')->getFont()->setSize(12);
// 文字加粗
$sheet->getStyle('A1:N1')->getFont()->setBold(true);
// 字體設(shè)置
$sheet->getStyle('A1:N1')->getFont()->setName('黑體');6、單元格文字水平、垂直居中
給單元格A1中的文字設(shè)置水平、垂直居中。需要注意的是需要引用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加邊框,可以單獨(dú)設(shè)置上、下、左、右、全面邊框,需要引用\Style\Border
use PhpOffice\PhpSpreadsheet\Style\Border;
// 邊框樣式
$borderstyle = [
'borders' => [
'outline' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
];
$sheet->getStyle('A4:B4')->applyFromArray($borderstyle);8、設(shè)置單元格背景顏色
給單元格A4設(shè)置背景顏色,需要引用\Style\Fill
use PhpOffice\PhpSpreadsheet\Style\Fill;
$sheet->getStyle('A4')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('D9D9D9'); 9、設(shè)置行高
// 第一行行高設(shè)置為30 $sheet->getRowDimension(1)->setRowHeight(30); // 設(shè)置默認(rèn)行高 $sheet->getDefaultRowDimension()->setRowHeight(20);
10、設(shè)置列寬
// 設(shè)置A列的列寬
$sheet->getColumnDimension('A')->setWidth(15);
// 設(shè)置所有單元格的列寬
$sheet->getDefaultColumnDimension()->setWidth('15');11、設(shè)置文字顏色
setRGB:顏色值帶#號(hào)
setARGB:顏色值不帶#號(hào)
$sheet->getStyle('B3')->getFont()->getColor()->setRGB('#AEEEEE');
$sheet->getStyle('B3')->getFont()->getColor()->setARGB('FFFF0000');12、設(shè)置超鏈接
給單元格E6中的文字設(shè)置超鏈接
$sheet->setCellValue('E6', '百度');
$sheet->getCell('E6')->getHyperlink()->setUrl('www.baidu.com');13、設(shè)置sheet的標(biāo)題
// 設(shè)置sheet名稱(chēng)
$sheet->setTitle('ADR報(bào)告');14、使用函數(shù)
SUM:求和
VERAGE:平均數(shù)
MIN:最小值
MAX:最大值
$sheet->setCellValue('A3', '=SUM(A1:A2)');15、寫(xiě)入圖片
往單元格里寫(xiě)入圖片,需要引用\Worksheet\Drawing
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
//寫(xiě)入圖片
$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、導(dǎo)出xlsx文件
需要引用IOFactory
use PhpOffice\PhpSpreadsheet\IOFactory;
// MIME 協(xié)議,文件的類(lèi)型,不設(shè)置,會(huì)默認(rèn)html
header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// MIME 協(xié)議的擴(kuò)展
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、導(dǎo)出xls文件
需要引用IOFactory
use PhpOffice\PhpSpreadsheet\IOFactory;
// MIME 協(xié)議,文件的類(lèi)型,不設(shè)置,會(huì)默認(rèn)html
header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// MIME 協(xié)議的擴(kuò)展
$filename = date('Y-m-d').'工作報(bào)告單';
header('Content-Disposition:attachment;filename='.$filename .'.xls');
// 緩存控制
header('Cache-Control:max-age=0');
$write = IOFactory::createWriter($spreadsheet, 'Xls');
$write->save('php://output');三、完整實(shí)例
$adrinfo = array();
if (!empty($adrinfo)) {
//實(shí)例化
$spreadsheet = new Spreadsheet();
$filename = $adrinfo['name'].'_ADR報(bào)告'.date('YmdHis').rand(10000, 99999); //導(dǎo)出文件名
$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');
// 設(shè)置表格第一行顯示內(nèi)容
$sheet->setCellValue('A1', '藥品不良反應(yīng)/事件報(bào)告表');
$sheet->getStyle('A1')->getFont()->setSize(12); // 設(shè)置單元格字體大小
// 水平、垂直居中
$sheet->getStyle('A1')->applyFromArray($alignstyle);
// 設(shè)置行高
$sheet->getRowDimension(1)->setRowHeight(30);
//設(shè)置列寬
$sheet->getDefaultColumnDimension()->setWidth('15');
// 加粗
$sheet->getStyle('A1:N1')->getFont()->setBold(true);
// 設(shè)置sheet名稱(chēng)
$sheet->setTitle($adrinfo['name'].'_ADR報(bào)告');
內(nèi)容
// 第2行
$sheet->setCellValue('A2','首次/跟蹤:');
$sheet->setCellValue('B2','首次報(bào)告');
// 設(shè)置單元格背景顏色
// $sheet->getStyle('A2')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('D9D9D9');
// 設(shè)置行高
$sheet->getRowDimension('2')->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A2:N2')->applyFromArray($alignstyle);
// 第3行
$sheet->setCellValue('A3','已知/新的:');
$sheet->setCellValue('C3','一般/嚴(yán)重:');
$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','歲');
// 設(shè)置邊框
$sheet->getStyle('A4:B4')->applyFromArray($borderstyle);
$sheet->getStyle('C4:D4')->applyFromArray($borderstyle);
$sheet->getStyle('E4:F4')->applyFromArray($borderstyle);
$sheet->getStyle('G4:N4')->applyFromArray($borderstyle);
// 設(shè)置行高
$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','聯(lián)系方式:');
$sheet->setCellValue('H5',$adrinfo['dianhua']);
// 設(shè)置邊框
$sheet->getStyle('A5:B5')->applyFromArray($borderstyle);
$sheet->getStyle('C5:F5')->applyFromArray($borderstyle);
$sheet->getStyle('G5:N5')->applyFromArray($borderstyle);
// 設(shè)置行高
$sheet->getRowDimension('5')->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A5:N5')->applyFromArray($alignstyle);
// 第6行
$sheet->setCellValue('A6','原患疾?。?);
$sheet->setCellValue('G6','醫(yī)院名稱(chēng):');
$sheet->setCellValue('H6',$adrinfo['member']['danwei']);
$sheet->setCellValue('K6','病歷號(hào)/門(mén)診號(hào):');
$sheet->setCellValue('L6',$adrinfo['jiuzhenhao']);
// 設(shè)置邊框
$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');
// 設(shè)置行高
$sheet->getRowDimension('6')->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A6:N6')->applyFromArray($alignstyle);
// 設(shè)置單元格背景顏色
// $sheet->getStyle('A6')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('D9D9D9');
// 第7行
$sheet->setCellValue('A7','既往藥品不良反應(yīng)/事件:');
// 設(shè)置邊框
$sheet->getStyle('A7:B7')->applyFromArray($borderstyle);
$sheet->getStyle('C7:N7')->applyFromArray($borderstyle);
// 合并單元格
$sheet->mergeCells('C7:N7');
// 設(shè)置行高
$sheet->getRowDimension('7')->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A7:B7')->applyFromArray($alignstyle);
// 設(shè)置單元格背景顏色
// $sheet->getStyle('A7')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('D9D9D9');
// 第8行
$sheet->setCellValue('A8','家族藥品不良反應(yīng)/事件:');
$sheet->setCellValue('B8','不詳');
// 設(shè)置邊框
$sheet->getStyle('A8:N8')->applyFromArray($borderstyle);
// 設(shè)置行高
$sheet->getRowDimension('8')->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A8:N8')->applyFromArray($alignstyle);
// 設(shè)置單元格背景顏色
// $sheet->getStyle('A8')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('D9D9D9');
// 第9行
$sheet->setCellValue('A9','相關(guān)重要信息:');
$sheet->setCellValue('B9',$adrinfo['huanzheqingkuang'].';過(guò)敏:'.$adrinfo['guomin']);
// 設(shè)置邊框
$sheet->getStyle('A9:N9')->applyFromArray($borderstyle);
// 合并單元格
$sheet->mergeCells('B9:N9');
// 設(shè)置行高
$sheet->getRowDimension('9')->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A9')->applyFromArray($alignstyle);
// 設(shè)置單元格背景顏色
// $sheet->getStyle('A9')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('D9D9D9');
// 第10行 懷疑藥品
$sheet->setCellValue('B10','批準(zhǔn)文號(hào)')
->setCellValue('C10','商品名')
->setCellValue('D10','通用名')
->setCellValue('E10','生產(chǎn)廠家')
->setCellValue('F10','生產(chǎn)批號(hào)')
->setCellValue('G10','次劑量')
->setCellValue('H10','給藥途徑')
->setCellValue('I10','頻次')
->setCellValue('J10','開(kāi)始用藥日期')
->setCellValue('K10','停止用藥日期')
->setCellValue('L10','用藥原因')
->setCellValue('M10','停藥是否消失減輕')
->setCellValue('N10','再次用藥是否再出現(xiàn)');
// 統(tǒng)計(jì)共上傳了多少條藥品記錄
$cc = count($adrinfo['yaowu']);
// 下一項(xiàng)開(kāi)始行序號(hào)
$i = 10+$cc;
// 設(shè)置邊框
$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);
// 設(shè)置行高
$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);
// 設(shè)置邊框
$sheet->getStyle('A11:A'.$i)->applyFromArray($borderstyle);
$k = 0;
foreach ($adrinfo['yaowu'] as $v) {
$k++;
$sheet->setCellValue('B'.($k+10), str_replace('批準(zhǔn)文號(hào):','',$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('產(chǎn)品批號(hào):','',$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('開(kāi)始服用該藥的日期:','',$v[9]))
->setCellValue('K'.($k+10), str_replace('停止服用該藥的日期:','',$v[10]))
->setCellValue('L'.($k+10), str_replace('為什么患者要使用這個(gè)藥品:','',$v[8]))
->setCellValue('M'.($k+10), str_replace('停藥是否消失減輕:','',$v[12]))
->setCellValue('N'.($k+10), str_replace('再次用藥是否再出出現(xiàn):','',$v[13]));
// 設(shè)置邊框
$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);
// 設(shè)置行高
$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);
// 設(shè)置邊框
$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);
// 設(shè)置行高
$sheet->getRowDimension(($i+1))->setRowHeight(22);
$sheet->getRowDimension(($i+2))->setRowHeight(22);
// p($i+3);
// 不良反應(yīng)事件名稱(chēng)
$sheet->setCellValue('A'.($i+3),'不良反應(yīng)/事件名稱(chēng):');
$sheet->setCellValue('G'.($i+3),'不良反應(yīng)/事件發(fā)生時(shí)間:');
$sheet->setCellValue('H'.($i+3),$adrinfo['blfydate']);
// 設(shè)置邊框
$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));
// 設(shè)置行高
$sheet->getRowDimension(($i+3))->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A'.($i+3).':N'.($i+3))->applyFromArray($alignstyle);
// 不良反應(yīng)過(guò)程描述
$sheet->setCellValue('A'.($i+4),'不良反應(yīng)/事件過(guò)程描述(包括癥狀、體征、臨床檢驗(yàn)等)及處理情況(可附頁(yè)):');
$jiancha_str = '';
if (!empty($adrinfo['jiancha'])) {
$jiancha_str = "相關(guān)檢查檢驗(yàn)情況:\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));
// 設(shè)置行高
$sheet->getRowDimension($i+5)->setRowHeight(50);
// 設(shè)置邊框
$sheet->getStyle('A'.($i+4).':N'.($i+5))->applyFromArray($borderstyle);
// 水平、垂直居中
// $sheet->getStyle('A'.($i+5).':N'.($i+5))->applyFromArray($alignstyle);
// 不良反應(yīng)/事件的結(jié)果:
$sheet->setCellValue('A'.($i+6),'不良反應(yīng)/事件的結(jié)果:');
// 設(shè)置邊框
$sheet->getStyle('A'.($i+6).':N'.($i+6))->applyFromArray($borderstyle);
// 設(shè)置行高
$sheet->getRowDimension(($i+6))->setRowHeight(22);
// 合并單元格
// $sheet->mergeCells('B'.($i+6).':N'.($i+6));
// 對(duì)原患疾病的影響
$sheet->setCellValue('A'.($i+7),'對(duì)原患疾病的影響:');
// 設(shè)置邊框
$sheet->getStyle('A'.($i+7).':N'.($i+7))->applyFromArray($borderstyle);
// 合并單元格
$sheet->mergeCells('B'.($i+7).':N'.($i+7));
// 設(shè)置行高
$sheet->getRowDimension(($i+7))->setRowHeight(22);
// 關(guān)聯(lián)性評(píng)價(jià)
$sheet->setCellValue('A'.($i+8),'關(guān)聯(lián)性評(píng)價(jià)');
$sheet->mergeCells('A'.($i+8).':A'.($i+9));
$sheet->setCellValue('B'.($i+8),'報(bào)告人評(píng)價(jià):');
$sheet->setCellValue('K'.($i+8),'簽名:');
$sheet->setCellValue('L'.($i+8),$adrinfo['member']['name']);
$sheet->setCellValue('B'.($i+9),'報(bào)告單位評(píng)價(jià):');
$sheet->setCellValue('K'.($i+9),'簽名:');
// 設(shè)置邊框
$sheet->getStyle('A'.($i+8).':N'.($i+9))->applyFromArray($borderstyle);
// 水平、垂直居中
$sheet->getStyle('A'.($i+8).':B'.($i+9))->applyFromArray($alignstyle);
// 設(shè)置行高
$sheet->getRowDimension(($i+8))->setRowHeight(22);
$sheet->getRowDimension(($i+9))->setRowHeight(22);
// 報(bào)告人信息
$sheet->setCellValue('A'.($i+10),'報(bào)告人信息');
$sheet->mergeCells('A'.($i+10).':A'.($i+11));
$sheet->setCellValue('B'.($i+10),'聯(lián)系電話:');
$sheet->setCellValue('C'.($i+10),$adrinfo['member']['tel']);
$sheet->setCellValue('F'.($i+10),'職業(yè):');
$sheet->setCellValue('I'.($i+10),'報(bào)告人科室:');
$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),'報(bào)告日期:');
$sheet->setCellValue('J'.($i+11),date('Y-m-d',$adrinfo['createtime']));
// 設(shè)置邊框
$sheet->getStyle('A'.($i+10).':N'.($i+11))->applyFromArray($borderstyle);
// 水平、垂直居中
$sheet->getStyle('A'.($i+10).':N'.($i+11))->applyFromArray($alignstyle);
// 設(shè)置行高
$sheet->getRowDimension(($i+10))->setRowHeight(22);
$sheet->getRowDimension(($i+11))->setRowHeight(22);
// 報(bào)告單位信息
$sheet->setCellValue('A'.($i+12),'報(bào)告單位信息');
$sheet->setCellValue('B'.($i+12),'單位名稱(chēng):');
$sheet->setCellValue('C'.($i+12),$adrinfo['member']['danwei']);
$sheet->setCellValue('F'.($i+12),'聯(lián)系人:');
$sheet->setCellValue('I'.($i+12),'電話:');
// 設(shè)置邊框
$sheet->getStyle('A'.($i+12).':N'.($i+12))->applyFromArray($borderstyle);
// 設(shè)置行高
$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']);
// 設(shè)置邊框
$sheet->getStyle('A'.($i+13).':N'.($i+13))->applyFromArray($borderstyle);
// 設(shè)置行高
$sheet->getRowDimension(($i+13))->setRowHeight(22);
// 水平、垂直居中
$sheet->getStyle('A'.($i+13).':N'.($i+13))->applyFromArray($alignstyle);
ob_end_clean(); //清除緩沖區(qū),避免亂碼
header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// MIME 協(xié)議的擴(kuò)展
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實(shí)現(xiàn)批量導(dǎo)出數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于ThinkPHP5 PhpSpreadsheet導(dǎo)出數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
深入解析WordPress中加載模板的get_template_part函數(shù)
這篇文章主要介紹了WordPress中加載模板的get_template_part函數(shù),其中重點(diǎn)講解了其函數(shù)鉤子的使用,需要的朋友可以參考下2016-01-01
用PHP中的 == 運(yùn)算符進(jìn)行字符串比較
用PHP中的 == 運(yùn)算符進(jìn)行字符串比較...2006-11-11
PHP實(shí)現(xiàn)隨機(jī)發(fā)放撲克牌
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)隨機(jī)發(fā)放撲克牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
SESSION存放在數(shù)據(jù)庫(kù)用法實(shí)例
這篇文章主要介紹了SESSION存放在數(shù)據(jù)庫(kù)用法,自定義了一個(gè)簡(jiǎn)單的針對(duì)數(shù)據(jù)操作的session類(lèi)并給出了使用該類(lèi)存儲(chǔ)到數(shù)據(jù)庫(kù)的相關(guān)技巧,需要的朋友可以參考下2015-08-08
PHP入門(mén)教程之面向?qū)ο蠡靖拍顚?shí)例分析
這篇文章主要介紹了PHP入門(mén)教程之面向?qū)ο蠡靖拍?結(jié)合實(shí)例形式簡(jiǎn)單分析了php面向?qū)ο笏婕暗念?lèi)的定義、對(duì)象的創(chuàng)建、構(gòu)造函數(shù)、成員變量、成員方法等,需要的朋友可以參考下2016-09-09
php保存任意網(wǎng)絡(luò)圖片到服務(wù)器的方法
這篇文章主要介紹了php保存任意網(wǎng)絡(luò)圖片到服務(wù)器的方法,涉及php通過(guò)curl操作遠(yuǎn)程圖片的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04

