## phpoffice 插件
一:安裝phpoffice/phpspreadsheet
~~~
composer require phpoffice/phpspreadsheet
~~~
二:phpoffice/phpspreadsheet API接口詳解
PhpSpreadsheet提供了豐富的API接口,可以設置諸多單元格以及文檔屬性,包括樣式、圖片、日期、函數等等諸多應用,總之你想要什么樣的Excel表格,PhpSpreadsheet都能做到。
在使用phpoffice/phpspreadsheet的API接口前,確保引入了正確的文件并實例化
~~~
use PhpOffice\PhpSpreadsheet\Spreadsheet;//引入文件 $spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();//創建一個新的excel文檔$sheet = $spreadsheet->getActiveSheet();//獲取當前操作sheet的對象
~~~
### 1:設置字體
~~~
$sheet->getStyle('A7:B7')->getFont()->setBold(true)->setName('Arial')->setSize(10);//將A7至B7兩單元格設置為粗體字,Arial字體,10號字
$sheet->getStyle('B1')->getFont()->setBold(true);//將B1單元格設置為粗體字
~~~
### 2:設置顏色
~~~
$sheet->getStyle('A1')->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);//將A1單元格文字顏色設為紅色
~~~
### 3:設置列寬
~~~
$sheet->getColumnDimension('A')->setWidth(20);//將A列的寬度設為20(字符)
$sheet->getColumnDimension('B')->setAutoSize(true);//將B列的寬度設為自動寬度
$sheet->getDefaultColumnDimension()->setWidth(12);//設置默認列寬為12
~~~
### 4:設置行高
~~~
$sheet->getRowDimension('10')->setRowHeight(100);//將第十行的高度設為100pt
$sheet->getDefaultRowDimension()->setRowHeight(15);//設置默認行高為15
~~~
### 5:對齊
~~~
$sheet->getStyle('A:D')->getAlignment()
->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER) //設置垂直居中
->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER) //設置水平居中
->setWrapText(true); //設置自動換行
~~~
### 6:合并單元格
~~~
$sheet->mergeCells('A1:D2');//A1到D2合并為一個單元格
~~~
### 7:將合并后的單元格拆分
~~~
$sheet->unmergeCells('A1:D2');//將合并后的單元格拆分。
~~~
### 8:使用applyFromArray實現單元格樣式設置
~~~
//樣式變量
$style = [
//設置字體樣式
'font' => [
'name' => 'Arial',
'bold' => true,
'italic' => false,
'underline' => Font::UNDERLINE_DOUBLE,
'strikethrough' => false,
'color' => [
'rgb' => '808080'
]
],
//設置邊框線樣式
'borders' => [
//allBorders所有的邊框線樣式
//左邊框線
'bottom' => [
'borderStyle' => Border::BORDER_DASHDOT,
'color' => [
'rgb' => '808080'
]
],
//上邊框線
'top' => [
'borderStyle' => Border::BORDER_DASHDOT,
'color' => [
'rgb' => '808080'
]
]
],
//對齊樣式
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER,
'wrapText' => true,
],
//是否使用前綴
'quotePrefix' => true
];
$sheet->getStyle('A1:D1')->applyFromArray($style);
~~~
### 9:設置工作表標題
~~~
$sheet->setTitle('Hello');;//設置當前工作表標題。
~~~
### 10:設置單元格的格式
~~~
$sheet->getStyle('D2')->getNumberFormat()
->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);//將D2單元格的格式設為文本格式
$sheet->getStyle('A1:D2')->getNumberFormat()
->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);//將A1到D2的單元格設置為文本格式
~~~
### 11:換行
~~~
$sheet->getCell('A4')->setValue("hello\nworld");//將A4單元格的hello和world換行
~~~
### 12:超鏈接
~~~
//將A2單元格內容設置blog并點擊跳轉$sheet->setCellValue('A2', 'blog');$sheet->getCell('A2')->getHyperlink()->setUrl('https://www.php.net');
~~~
### 13:使用函數
常用函數有:總和(SUM),最大數(MAX),最小數(MIN),平均值(AVERAGE)
~~~
$sheet->setCellValue('B5', '=SUM(B1:B4)');//將B5單元格的內容設為B1到B4的之和
~~~
14:設置文檔屬性
~~~
$spreadsheet->getProperties()
->setCreator("author") //作者
->setLastModifiedBy("last-author") //最后修改者
->setTitle("title") //標題
->setSubject("subject") //副標題
->setDescription("description") //描述
->setKeywords("keywords") //關鍵字
->setCategory("category"); //分類
~~~
三:簡單實現生成excel
~~~
待補充
~~~
四:讀取excel文件
~~~
<?php
namespace Spread;
// 生成Excel
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment as PHPExcel_Style_Alignment;
use PhpOffice\PhpSpreadsheet\Cell\DataType as PHPExcel_Cell_DataType;
use PhpOffice\PhpSpreadsheet\Style\Fill as PHPExcel_Style_Fill;
use PhpOffice\PhpSpreadsheet\Style\Border as Border;
// 讀取Excel
use PhpOffice\PhpSpreadsheet\IOFactory;
class Spread{
// Excel讀取
public static function excelReader($excelfile){
$inputFileType = IOFactory::identify($excelfile);
// Xlsx
$excelReader = IOFactory::createReader($inputFileType);
// 載入excel文件
$PHPExcel = $excelReader->load($excelfile);
// 讀取第一個工作表
$sheet = $PHPExcel->getSheet(0);
// 取得總行數
// $highest_row = $sheet->getHighestRow();
// 取得列數 字母abc...
// $highest_column = $sheet->getHighestColumn();
// $sheetdata = $sheet->toArray();---全部下標都是從0開始
// 保留二維數組從1,里面的一維數組從A......
$sheetdata = $sheet->toArray(null, true, true, true);
// 直接返回數組數據
return $sheetdata;
}
}
~~~
~~~
public function data()
{
$fileName = root_path().'public/'."demo.xlsx";
$data = Spread::excelReader($fileName);
//print_r($data);
$tmp['code'] = '0';
$tmp['count'] = count($data);
$tmp['data'] = $data;
return json($tmp);
}
~~~
- 搭建ThinkPHP6的開發環境
- 配置ThinkPHP6
- 必要的基礎知識(basic)
- MVC開發模式
- 控制器(controller)
- 數據庫(database)
- 模型(model)
- 模型關聯(relation)
- 視圖(view)
- Session
- Cookie
- 緩存(cache)
- 上傳(upload)
- 驗證器(validate)
- 驗證碼(captcha)
- 命令行(command)
- 服務器部署(deploy)
- 數據備份(backup)
- 數據同步(synchronization)
- 訂閱服務(subscribe)
- PHP 易混淆知識點
- 助手函數
- MySQL規范
- Redis 規范
- office插件 phpoffice
- 拼音插件 pinyin
- 日期插件 datetime
- 消息插件 amqp
- 產品部署環境的搭建
- PDF 等雜項處理
- 文件上傳
- 常用擴展
- flc/dysms
- 使用示例 ①
- 使用示例 ②
- qiniu/php-sdk
- 簡介
- 使用示例
- 使用示例 2 ②
- liliuwei/thinkphp-jump
- 擴展介紹
- 下載擴展
- 使用方法
- topthink/think-captcha
- 安裝擴展
- 驗證碼顯示
- 更換驗證碼
- 驗證碼校驗
- 驗證碼配置
- 自定義驗證碼
- phpoffice/phpspreadsheet
- 數據寫入表格
- 讀取表格數據
- topthink/think-queue
- 安裝
- 自定義函數
- 任務類
- 帶有日志的任務類