[TOC] #### 1. PhpSpreadsheet 简介 --- PhpSpreadsheet 是一个用纯PHP编写的库,提供了一组类。使您可以读取和写入不同电子表格文件格式,并且提供了丰富的API接口,可以设置诸多单元格以及文档属性 #### 2. PhpSpreadsheet 支持的文件格式 --- **列出部分常用的,更多文件支持在官网看** 官方文档:[https://phpspreadsheet.readthedocs.io/en/latest](https://phpspreadsheet.readthedocs.io/en/latest) + xls + xlsx + csv + pdf #### 3. PhpSpreadsheet 依赖的PHP版本 --- | PhpSpreadsheet 版本 | PHP版本 | | ------------ | ------------ | | v1.13.+ | v7.2+ | | v1.10.0 ~ v1.12.0 | v7.1 | #### 4. 下载(引入) PhpSpreadsheet 扩展包 --- 当前最新版(v1.14.1 2020-08-21),要求PHP版本7.2.+ 如果在PHP框架中需要引入该扩展包,需要在框架根目录执行该命令 ```php composer require phpoffice/phpspreadsheet ``` ```php <?php // 引入composer自动加载文件 require 'vendor/autoload.php'; // 进行 phpoffice/phpspreadsheet 操作 ``` #### 5. 表格的三种操作方式(应用场景) --- **最常用的是 `a` 和 `c`** + **a. 读取表格(写入数据)** + **b. 生成表格,并将表格保存在服务器上** + **c. 生成表格,导出到客户端,相当于浏览器的下载(导出订单记录)** #### 6. 获取工作薄 --- ```php <?php // 引入composer自动加载文件 require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; // 获取Spreadsheet对象(电子表格对象) $spreadsheet = new Spreadsheet; // 获取活动工作薄(工作薄对象) $sheet = $spreadsheet->getActiveSheet(); // 设置工作簿标题 $sheet->setTitle('新增用户'); ``` #### 7. 获取单元格对象的两种方式 --- ```php // $sheet 是工作薄对象 // 获取单元格的两种方式(返回单元格对象) // getCell(坐标) 示例: getCell('A2') // getCellByColumnAndRow(列数,行数) 示例: getCellByColumnAndRow(1, 2) $test1 = $sheet->getCell('A2'); // 第一列第一行 $test2 = $sheet->getCellByColumnAndRow(1, 2); var_dump($test1); var_dump($test2); ``` #### 8. 获取单元格的值和坐标 --- **getValue() - 获取单元格的值** ```php // getValue() 获取单元格的值 $cell = $sheet->getCell('A2'); $cellValue = $cell->getValue(); var_dump($cellValue); ``` **getCoordinate() - 获取单元格的坐标** ```php // getCoordinate() 获取单元格坐标 $cell = $sheet->getCell('A2'); $coordinate = $cell->getCoordinate(); var_dump($coordinate);//'A2' ``` #### 9. 将表格保存在服务器上 --- ```php <?php // 引入composer自动加载文件 require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // 获取Spreadsheet对象(电子表格对象) $spreadsheet = new Spreadsheet; // 获取活动工作薄(工作薄对象) $sheet = $spreadsheet->getActiveSheet(); // 设置单元格的值 $sheet->getCell('A1')->setValue('123'); // 表格保存在服务器上 $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); ``` #### 10. 设置单元格 --- **一、setValue(单元格的值)** 通过单元格对象调用,参数是单元格的值,返回单元格对象 ```php $sheet->getCell('A1')->setValue('张三'); ``` **二、setCellValue(坐标,单元格的值)** 通过工作薄对象直接调用,返回工作薄对象 ```php $sheet->setCellValue('A1', '张三'); ``` **三、setCellValueByColumnAndRow(列数,行数,单元格的值)** 通过工作薄对象直接调用,返回工作薄对象 ```php $sheet->setCellValueByColumnAndRow(1, 1, '张三'); ``` #### 11. 合并单元格 --- ```php // 水平方向合并 $sheet->mergeCells('A1:C1'); $sheet->setCellValue('A1', '近半年订单'); // 垂直方向合并 $sheet->mergeCells('F3:F6'); $sheet->setCellValue('F3', '注意事项'); // 水平+垂直方向合并 $sheet->mergeCells('A3:D6'); $sheet->setCellValue('A3', '辰风沐阳'); ``` #### 12. 设置列宽 --- ```php $sheet->getColumnDimension('A')->setWidth(20); ``` #### 13. 设置单元格样式 ---