[TOC] #### 1. PhpSpreadsheet 簡介 --- PhpSpreadsheet 是一個用純PHP編寫的庫,提供了一組類。使您可以讀取和寫入不同電子表格文件格式,并且提供了豐富的API接口,可以設(shè)置諸多單元格以及文檔屬性 #### 2. PhpSpreadsheet 支持的文件格式 --- **列出部分常用的,更多文件支持在官網(wǎng)看** 官方文檔:[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 擴(kuò)展包 --- 當(dāng)前最新版(v1.14.1 2020-08-21),要求PHP版本7.2.+ 如果在PHP框架中需要引入該擴(kuò)展包,需要在框架根目錄執(zhí)行該命令 ```php composer require phpoffice/phpspreadsheet ``` ```php <?php // 引入composer自動加載文件 require 'vendor/autoload.php'; // 進(jìn)行 phpoffice/phpspreadsheet 操作 ``` #### 5. 表格的三種操作方式(應(yīng)用場景) --- **最常用的是 `a` 和 `c`** + **a. 讀取表格(寫入數(shù)據(jù))** + **b. 生成表格,并將表格保存在服務(wù)器上** + **c. 生成表格,導(dǎo)出到客戶端,相當(dāng)于瀏覽器的下載(導(dǎo)出訂單記錄)** #### 6. 獲取工作薄 --- ```php <?php // 引入composer自動加載文件 require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; // 獲取Spreadsheet對象(電子表格對象) $spreadsheet = new Spreadsheet; // 獲取活動工作薄(工作薄對象) $sheet = $spreadsheet->getActiveSheet(); // 設(shè)置工作簿標(biāo)題 $sheet->setTitle('新增用戶'); ``` #### 7. 獲取單元格對象的兩種方式 --- ```php // $sheet 是工作薄對象 // 獲取單元格的兩種方式(返回單元格對象) // getCell(坐標(biāo)) 示例: getCell('A2') // getCellByColumnAndRow(列數(shù),行數(shù)) 示例: getCellByColumnAndRow(1, 2) $test1 = $sheet->getCell('A2'); // 第一列第一行 $test2 = $sheet->getCellByColumnAndRow(1, 2); var_dump($test1); var_dump($test2); ``` #### 8. 獲取單元格的值和坐標(biāo) --- **getValue() - 獲取單元格的值** ```php // getValue() 獲取單元格的值 $cell = $sheet->getCell('A2'); $cellValue = $cell->getValue(); var_dump($cellValue); ``` **getCoordinate() - 獲取單元格的坐標(biāo)** ```php // getCoordinate() 獲取單元格坐標(biāo) $cell = $sheet->getCell('A2'); $coordinate = $cell->getCoordinate(); var_dump($coordinate);//'A2' ``` #### 9. 將表格保存在服務(wù)器上 --- ```php <?php // 引入composer自動加載文件 require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // 獲取Spreadsheet對象(電子表格對象) $spreadsheet = new Spreadsheet; // 獲取活動工作薄(工作薄對象) $sheet = $spreadsheet->getActiveSheet(); // 設(shè)置單元格的值 $sheet->getCell('A1')->setValue('123'); // 表格保存在服務(wù)器上 $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); ``` #### 10. 設(shè)置單元格 --- **一、setValue(單元格的值)** 通過單元格對象調(diào)用,參數(shù)是單元格的值,返回單元格對象 ```php $sheet->getCell('A1')->setValue('張三'); ``` **二、setCellValue(坐標(biāo),單元格的值)** 通過工作薄對象直接調(diào)用,返回工作薄對象 ```php $sheet->setCellValue('A1', '張三'); ``` **三、setCellValueByColumnAndRow(列數(shù),行數(shù),單元格的值)** 通過工作薄對象直接調(diào)用,返回工作薄對象 ```php $sheet->setCellValueByColumnAndRow(1, 1, '張三'); ``` #### 11. 合并單元格 --- ```php // 水平方向合并 $sheet->mergeCells('A1:C1'); $sheet->setCellValue('A1', '近半年訂單'); // 垂直方向合并 $sheet->mergeCells('F3:F6'); $sheet->setCellValue('F3', '注意事項(xiàng)'); // 水平+垂直方向合并 $sheet->mergeCells('A3:D6'); $sheet->setCellValue('A3', '辰風(fēng)沐陽'); ``` #### 12. 設(shè)置列寬 --- ```php $sheet->getColumnDimension('A')->setWidth(20); ``` #### 13. 設(shè)置單元格樣式 ---