PhpSpreadsheet实现Excel操作
PhpSpreadsheet是一个用纯PHP编写的库,并引入了命名空间,PSR规范等。
以下内容简单介绍一下PhpSpreadsheet的使用。
安装扩展
使用composer安装phpSpreadsheet
composer require phpoffice/phpspreadsheet
安装成功后会在vendor\phpoffice\phpspreadsheet目录下看到扩展文件。
引入扩展
在使用是根据命名空间引入phpspreadsheet扩展
use PhpOffice\PhpSpreadsheet\IOFactory;
读取数据
读功能支持文件后缀为Xlsx、Xls、’Xml、Ods、Slk、Html、Csv、Gnumeric类型的文件。
$file_name='E:\test1.xlsx';
$sheel=IOFactory::createReader('Xlsx');//创建读权限
$spreadsheet = $sheel->load($file_name);//指定要操作的文件
$sheet = $spreadsheet->getSheet(0);//设置读取工作簿,从0开始指定要读取的工作簿
$count = $sheet->getHighestRow();//获取最高工作表行
$value = $sheet->getCell('A1')->getValue();//读取单元格内容
写入数据
写功能支持文件后缀为Xlsx、Xls、Ods、Html、Csv、Gnumeric、Tcpdf、Dompdf、Mpdf类型的文件。
use PhpOffice\PhpSpreadsheet\Spreadsheet;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();//创建一个新的工作表
$sheet->setCellValue('A1', '1表格');//设置单元格内容
$sheel = IOFactory::createWriter($spreadsheet,'Xlsx');//写入
$sheel->save('E:\test1.xlsx');//输出到工作表(新建)
案例
结果:输出一个课程表格
输出效果:
相关代码:
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Fill;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();//创建一个新的工作表$spreadsheet->getDefaultStyle()->getFont()->setName('微软雅黑'); //修改默认字体$sheet -> mergeCells('A1:F1'); //合并单元格$sheet -> setCellValue('A1', '课程表');//设置单元格内容//设置全局单元格内容居中
$styleArray_a1=['alignment'=>['horizontal'=>Alignment::HORIZONTAL_CENTER,//水平居中'vertical'=>Alignment::VERTICAL_CENTER,//垂直居中],
];
$sheet -> getStyle('A1:F12') -> applyFromArray($styleArray_a1);//设置表格顶部
$sheet->getStyle('A1:F1')->getFont()->setBold(true)->setName('黑体')->setSize(18);//设置A1:B1区域的字体为黑体加粗10px$sheet->getStyle('A1:F1')->getFont()->getColor()->setARGB(Color::NAMED_COLOR_TRANSLATIONS['Blue']);//设置单元格A1:F1字体颜色//设置表格主体标题
$styleArray = ['borders' => [//设置单元格边框'outline' => [//外边框'borderStyle' => Border::BORDER_THICK,'color' => ['argb' => '31869b'],],'inside' => [//内边框'borderStyle' => Border::BORDER_THIN,'color' => ['argb' => '3ba0b9'],]],'font'=>['name'=>'微软雅黑','bold'=>true,'size'=>'13','color'=>['argb' => Color::COLOR_WHITE]]
];
$sheet -> getStyle('A2:F2') -> applyFromArray($styleArray);$sheet -> getStyle('A2:F2') -> getFill()-> setFillType(Fill::FILL_SOLID)-> getStartColor() -> setARGB('31869b');//设置单元格背景色$rowArray=['星期一','星期二','星期三','星期四','星期五'];
$spreadsheet->getActiveSheet()->fromArray($rowArray, NULL,'B2');$sheet -> mergeCells('A4:A7'); //合并单元格
$sheet -> mergeCells('A8:A11'); //合并单元格$sheet -> setCellValueByColumnAndRow(1,3,'早自习');//设置单元格内容根据行和列赋值
$sheet -> setCellValueByColumnAndRow(1,4,'上午');//设置单元格内容根据行和列赋值
$sheet -> setCellValueByColumnAndRow(1,8,'下午');//设置单元格内容根据行和列赋值$sheet -> setCellValueByColumnAndRow(1,12,'晚自习');//设置单元格内容根据行和列赋值$sheet -> getDefaultColumnDimension() -> setWidth(14); //设置默认列宽为14$sheet -> getRowDimension('1') -> setRowHeight(35); //设置第1行高度为35
$sheet -> getDefaultRowDimension() -> setRowHeight(28); //设置默认行高为28$styleArray = ['borders' => ['outline' => [//外边框'borderStyle' => Border::BORDER_THICK,'color' => ['argb' => '7ec0d1'],],'inside' => [//内边框'borderStyle' => Border::BORDER_THIN,'color' => ['argb' => '99bec7'],]],
];
$sheet -> getStyle('A3:F12') -> applyFromArray($styleArray);//设置单元格边框$sheet -> getStyle('A3:F12') -> getFill()-> setFillType(Fill::FILL_SOLID)-> getStartColor() -> setARGB('e5faff');//设置单元格背景色$sheel = IOFactory::createWriter($spreadsheet,'Xlsx');//写入
$sheel -> save('E:\test1.xlsx');//输出到工作表(新建)
注:此工作表为新建工作表,如果此文件已存在会删除之后新建保存。
命令总结
注:get是获取,set为设置
设置单元格的值
//方式一
$sheet -> getCellByColumnAndRow(1,2)->setValue('内容');//列,行
//方式二
$sheet -> getCell('A3')->setValue('郭靖');
//方式三
$sheet -> setCellValueByColumnAndRow(1,3,'早自习');//列,行
//方式四
$sheet -> setCellValue('A1', '课程\n表');
//设置文本里的\n符合为:换行
$sheet->getStyle('A1')->getAlignment()->setWrapText(true);
获取单元格的值
//方式一
$sheet->getCell('A1')->getValue();
//方式二
$sheet->getCell('A1')->getCoordinate();
设置单元格文字样式
//方式一
$sheet->getStyle('B2')->getFont()->setBold(true)->setName('宋体')->setSize(20);
//方式二$styleArray = ['font'=>['name'=>'微软雅黑','bold'=>true,'size'=>'13','color'=>['argb' => Color::COLOR_WHITE]]
];
$sheet -> getStyle('A2:F2') -> applyFromArray($styleArray);
设置单元格格式(日期时间)
//方式一
$sheet->getStyle('A2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberF
单元格链接
//getHyperlink 获取单元格链接
//setUrl设置单元格链接
$sheet->getCell('A1')->getHyperlink()->setUrl('https://www.baidu.com/');
批量设置单元格值
$arrayData = [[NULL, '语文', '数学', '英语'],['张一', 12, 15, 21],['张二', 56, 73, 86],
];
$sheet->fromArray($arrayData,NULL,'C2');//C2开始位置
表格样式
$sheet -> getRowDimension(1) -> setRowHeight(35); //设置第1行高度为35
$sheet -> getColumnDimension('B')-> setAutoSize(true);//自动设置B列宽度
$sheet -> getDefaultRowDimension() -> setRowHeight(30); //设置默认行高为30
$sheet -> getDefaultColumnDimension() -> setWidth(10); //设置默认列宽为14
$sheet -> getColumnDimension('A') -> setWidth(14); //设置A列宽度为15
$sheet -> mergeCells('A4:A7');//合并单元格
$sheet -> unmergeCells('C3:G3'); //拆分单元格
//设置全局单元格内容居中
$styleArray_a1=['alignment'=>['horizontal'=>Alignment::HORIZONTAL_CENTER,//水平居中'vertical'=>Alignment::VERTICAL_CENTER,//垂直居中],
];
$sheet -> getStyle('A1:F12') -> applyFromArray($styleArray_a1);
applyFromArray 应用数组中的样式
支持font、alignment、borders、fill、numberFormat、protection、quotePrefx的设置。
PhpSpreadsheet实现Excel操作相关推荐
- 使用PhpSpreadsheet将Excel导入到MySQL数据库
使用PhpSpreadsheet将Excel导入到MySQL数据库 日常开发中,我们经常遇到这样的场景,需要将一个Excel表格数据如客户信息.学生成绩表导入到系统数据库中,然后在系统中进行进一步操作 ...
- PHP通过phpspreadsheet读取Excel文件
PHP通过phpspreadsheet读取Excel文件 安装 通过 Composer 安装 composer require phpoffice/phpspreadsheet 读文件 三行代码解决E ...
- PhpSpreadsheet处理Excel 导入、导出并设置样式
PhpSpreadsheet处理Excel PHPOffice 是一个用来处理办公相关软件的php类库 PhpSpreadsheet 专门处理excle的类库 导出如下: 引入类库 composer ...
- Qt之excel 操作使用说明
学习背景: 适合熟悉些qt开发,但是不是深入了解的开发者学习.具体实现(qt 5.1版本),office2007 Excel做验证,Win 7(64位),如有讲解有误,欢迎斧正! 一.简单介绍 QAx ...
- python数据分析报告的格式_Python数据报表之Excel操作模块用法分析
本文实例讲述了Python数据报表之Excel操作模块用法.分享给大家供大家参考,具体如下: 一 点睛 Excel是当今最流行的电子表格处理软件,支持丰富的计算函数及图表,在系统运营方面广泛用于运营数 ...
- python处理excel表格实例-通过实例学习Python Excel操作
这篇文章主要介绍了通过实例学习Python Excel操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.python 读取Excel # -* ...
- python与excel做数据可视化-Python的Excel操作及数据可视化
Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...
- python对excel某一列去重-「总结篇」Python中所有的Excel操作技巧
原标题:「总结篇」Python中所有的Excel操作技巧 Python对于Excel的操作是多种多样的,掌握了相关用法就可以随心所欲的操作数据了! 操作xls文件 xlrd(读操作): import ...
- python在excel中的应用-python中的excel操作
一. Excel在python中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到.测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. Excel中 ...
最新文章
- linux /etc/fstab文件参数求解释
- Python基础学习!基本元素,数字,字符串以及变量
- 双流棠湖中学怎么样_棠湖中学教师团队荣获四川省“最美教师团队”!
- 高并发负载均衡(三):LVS的DR模型试验搭建
- android动画详解
- 消息队列重要机制讲解以及MQ设计思路(kafka、rabbitmq、rocketmq)
- 最全的BI工具选型指南!给你五大箴言要记住
- 一个程序员的逗逼瞬间(四)
- 官方中文版开源!快速入门PyTorch
- 如何在 macOS Monterey 正式发布之前备份您的 Automator 作品?
- 如何使用离线网站,打开离线网站
- 阿里笔试算法题2021
- 百度地图API:自定义途经点路线拼接
- VMware下安装win7教程
- 喜马拉雅FM下载的音频转换为正常文件的JAVA实现
- 5G 核心网 Quality of Service Model (QoS Model)
- 数字签名与数字加密的区别
- 添加打印机,本地打印后台处理程序服务没有运行
- 谈 heuristic
- Linux中最危险的是个命令(很有趣呦~)(链接:http://os.51cto.com/art/201408/448756.htm)