详解PhpSpreadsheet设置单元格导⼊导出
PhpSpreadsheet提供了丰富的API接⼝,可以设置诸多单元格以及⽂档属性,包括样式、图⽚、⽇期、函数等等诸多应⽤,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到。
在thinkphp中引⼊该三⽅库的⽅法:
composer require phpoffice/phpspreadsheet
各个功能类说明如下:
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Color;      //设置字体颜⾊
use PhpOffice\PhpSpreadsheet\Style\Alignment;  //设置对齐⽅式
use PhpOffice\PhpSpreadsheet\Style\Border;      //设置Border样式
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;//数字格式化
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;      //导出XLSX⽂件
use PhpOffice\PhpSpreadsheet\Style\Fill;        //设置背景⾊
在调试设置时,确保引⼊了正确的⽂件并实例化。
1. use PhpOffice\PhpSpreadsheet\Spreadsheet;
2.
3. $spreadsheet = new Spreadsheet();
4. $worksheet = $spreadsheet->getActiveSheet();
设置⼯作簿的默认样式
可以设置⼯作簿的默认样式。让我们将默认字体设置为Arial⼤⼩8:
$spreadsheet->getDefaultStyle()->getFont()->setName('Arial');
$spreadsheet->getDefaultStyle()->getFont()->setSize(8);
字体
第1⾏代码将A7⾄B7两单元格设置为粗体字,Arial字体,10号字;第2⾏代码将B1单元格设置为粗体字。
1. $spreadsheet->getActiveSheet()->getStyle('A7:B7')->getFont()->setBold(true)->setName('Arial')
2. ->setSize(10);;
3. $spreadsheet->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);
颜⾊
将⽂字颜⾊设置为红⾊。
1. $spreadsheet->getActiveSheet()->getStyle('A4')
2. ->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);图⽚
可以将图⽚加载到Excel中。
1. $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
2. $drawing->setName('Logo');
3. $drawing->setDescription('Logo');
4. $drawing->setPath('./images/officelogo.jpg');
5. $drawing->setHeight(36);
列宽
将A列宽度设置为30(字符)。
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(30);
如果需要⾃动计算列宽,可以这样:
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
设置默认列宽为12。
$spreadsheet->getActiveSheet()->getDefaultColumnDimension()->setWidth(12);
⾏⾼
设置第10⾏⾏⾼为100pt。
$spreadsheet->getActiveSheet()->getRowDimension('10')->setRowHeight(100);
设置默认⾏⾼。
$spreadsheet->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);
对齐
将A1单元格设置为⽔平居中对齐。
1. $styleArray = [
2. 'alignment' => [
3. 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
4. ],
5. ];
6. $worksheet->getStyle('A1')->applyFromArray($styleArray);
给多⾏设置相同样式的⽅法,多⾏设置
$worksheet->getStyle('A1:F15')->applyFromArray($styleArray);
合并
将A18到E22合并为⼀个单元格。
$spreadsheet->getActiveSheet()->mergeCells('A18:E22');
$worksheet->getStyle('C1')->applyFromArray($styleArray);
$spreadsheet->getActiveSheet()->setCellValue('C1', 'C1居中');
//合并单元格 A7到F7,并且给合并的单元格设值;
$spreadsheet->getActiveSheet()->mergeCells('A7:F7');
$spreadsheet->getActiveSheet()->setCellValue('A7', '合并单元格A7到F7');
拆分
将合并后的单元格拆分。
$spreadsheet->getActiveSheet()->unmergeCells('A18:E22');
边框
将B2⾄G8的区域添加红⾊边框。
1. $styleArray = [
2. 'borders' => [
3. 'outline' => [
4. 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
5. 'color' => ['argb' => 'FFFF0000'],
6. ],
7. ],
8. ];
9. $worksheet->getStyle('B2:G8')->applyFromArray($styleArray);
⼯作表标题
设置当前⼯作表标题。
$spreadsheet->getActiveSheet()->setTitle('Hello');
⽇期时间
设置⽇期格式。
1. $spreadsheet->getActiveSheet()
2. ->setCellValue('D1', '2018-06-15');
3.
4. $spreadsheet->getActiveSheet()->getStyle('D1')
5. ->getNumberFormat()
6. ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDD2);
换⾏
使⽤\n进⾏单元格内换⾏,相当于(ALT+"Enter")。
1. $spreadsheet->getActiveSheet()->getCell('A4')->setValue("hello\nworld");
2. $spreadsheet->getActiveSheet()->getStyle('A4')->getAlignment()->setWrapText(true);
超链接
将单元格设置为超链接形式。
1. $spreadsheet->getActiveSheet()->setCellValue('E6', 'www.helloweba');
2. $spreadsheet->getActiveSheet()->getCell('E6')->getHyperlink()->setUrl('www.helloweba');
使⽤函数
使⽤SUM计算B5到C5之间单元格的总和。其他函数同理:最⼤数(MAX),最⼩数(MIN),平均值(AVERAGE)。
1. $spreadsheet->getActiveSheet()
2. ->setCellValue('B7', '=SUM(B5:C5)');
//设置F11为A11到E11之间的总和
$spreadsheet->getActiveSheet()->setCellValue('A11', 1);
$spreadsheet->getActiveSheet()->setCellValue('B11', 2);
$spreadsheet->getActiveSheet()->setCellValue('C11', 3);
$spreadsheet->getActiveSheet()->setCellValue('D11', 4);getsavefilename
$spreadsheet->getActiveSheet()->setCellValue('E11', 5);
//计算总和
$spreadsheet->getActiveSheet()->setCellValue('F11', '=SUM(A11:E11)');
设置⽂档属性
可以设置Excel⽂档属性。
1. $spreadsheet->getProperties()
2. ->setCreator("Helloweba") //作者
3. ->setLastModifiedBy("Yuegg") //最后修改者
4. ->setTitle("Office 2007 XLSX Test Document") //标题
5. ->setSubject("Office 2007 XLSX Test Document") //副标题
6. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") //描述
7. ->setKeywords("office 2007 openxml php") //关键字
8. ->setCategory("Test result file"); //分类
此外,除了提供丰富的Excel⽂件处理接⼝外,PhpSpreadshee还提供了CSV,PDF,HTML以及XML等⽂件处理接⼝。导⼊:
1. <?php
2. require 'vendor/autoload.php';
3.
4. $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('tmp.xlsx');

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。