## 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
- 安装
- 自定义函数
- 任务类
- 带有日志的任务类