PhpSpreadsheet设置单元格常用操作汇总


Posted in PHP onNovember 13, 2020

PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到。

在调试设置时,确保引入了正确的文件并实例化。

use PhpOffice\PhpSpreadsheet\Spreadsheet;

$spreadsheet = new Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet();

字体

第1行代码将A7至B7两单元格设置为粗体字,Arial字体,10号字;第2行代码将B1单元格设置为粗体字。

$spreadsheet->getActiveSheet()->getStyle('A7:B7')->getFont()->setBold(true)->setName('Arial')
->setSize(10);;
$spreadsheet->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);

颜色

将文字颜色设置为红色。

$spreadsheet->getActiveSheet()->getStyle('A4')
->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);

图片

可以将图片加载到Excel中。

$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing->setName('Logo');
$drawing->setDescription('Logo');
$drawing->setPath('./images/officelogo.jpg');
$drawing->setHeight(36);

列宽

将A列宽度设置为30(字符)。

$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(30);

如果需要自动计算列宽,可以这样:

$spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);

设置默认列宽为12。

$spreadsheet->getActiveSheet()->getDefaultColumnDimension()->setWidth(12);

行高

设置第10行行高为100pt。

$spreadsheet->getActiveSheet()->getRowDimension('10')->setRowHeight(100);

设置默认行高。

$spreadsheet->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);

对齐

将A1单元格设置为水平居中对齐。

$styleArray = [
  'alignment' => [
    'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
  ],
];
$worksheet->getStyle('A1')->applyFromArray($styleArray);

合并

将A18到E22合并为一个单元格。

$spreadsheet->getActiveSheet()->mergeCells('A18:E22');

拆分

将合并后的单元格拆分。

$spreadsheet->getActiveSheet()->unmergeCells('A18:E22');

边框

将B2至G8的区域添加红色边框。

$styleArray = [
  'borders' => [
    'outline' => [
      'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
      'color' => ['argb' => 'FFFF0000'],
    ],
  ],
];
$worksheet->getStyle('B2:G8')->applyFromArray($styleArray);

工作表标题

设置当前工作表标题。

$spreadsheet->getActiveSheet()->setTitle('Hello');

日期时间

设置日期格式。

$spreadsheet->getActiveSheet()
->setCellValue('D1', '2018-06-15');

$spreadsheet->getActiveSheet()->getStyle('D1')
->getNumberFormat()
->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDD2);

换行

使用\n进行单元格内换行,相当于(ALT+"Enter")。

$spreadsheet->getActiveSheet()->getCell('A4')->setValue("hello\nworld");
$spreadsheet->getActiveSheet()->getStyle('A4')->getAlignment()->setWrapText(true);

超链接

将单元格设置为超链接形式。

$spreadsheet->getActiveSheet()->setCellValue('E6', 'www.helloweba.net');
$spreadsheet->getActiveSheet()->getCell('E6')->getHyperlink()->setUrl('https://www.helloweba.net');

使用函数

使用SUM计算B5到C5之间单元格的总和。其他函数同理:最大数(MAX),最小数(MIN),平均值(AVERAGE)。

$spreadsheet->getActiveSheet()
->setCellValue('B7', '=SUM(B5:C5)');

设置文档属性

可以设置Excel文档属性。

$spreadsheet->getProperties()
->setCreator("Helloweba") //作者
->setLastModifiedBy("Yuegg") //最后修改者
->setTitle("Office 2007 XLSX Test Document") //标题
->setSubject("Office 2007 XLSX Test Document") //副标题
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") //描述
->setKeywords("office 2007 openxml php") //关键字
->setCategory("Test result file"); //分类

此外,除了提供丰富的Excel文件处理接口外,PhpSpreadshee还提供了CSV,PDF,HTML以及XML等文件处理接口。

更多使用设置请参照官网文档:https://phpspreadsheet.readthedocs.io/en/stable/。

导入:

<?php
require 'vendor/autoload.php';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('tmp.xlsx');
$sheet = $spreadsheet->getActiveSheet();
$data = $sheet->toArray();
 
var_dump($data);

导出:

<?php
require 'vendor/autoload.php';
 
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->getDefaultColumnDimension()->setWidth(40);
$sheet->getColumnDimensionByColumn(2)->setWidth(100);
 
$sheet->setCellValue('A2', 'Hello World !');
for ($i = 1; $i < 10; $i++) {
  $sheet->setCellValueByColumnAndRow($i, 1, 'Col'.$i);
}
 
$fileName = '01simple.xlsx';
 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'. $fileName .'"');
header('Cache-Control: max-age=0');
 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0
 
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('php://output');
exit;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
用PHP与XML联手进行网站编程代码实例
Jul 10 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
php使用curl存储cookie的示例
Mar 31 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
PHP自动生成表单代码分享
Jun 19 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 #PHP
PHP http请求超时问题解决方案
Nov 13 #PHP
PHP dirname简单使用代码实例
Nov 13 #PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 #PHP
PHP接入支付宝接口失效流程详解
Nov 10 #PHP
基于PHP实现用户在线状态检测
Nov 10 #PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 #PHP
You might like
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php对象工厂类完整示例
2018/08/09 PHP
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python学习笔记之常用函数及说明
2014/05/23 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
django模板语法学习之include示例详解
2017/12/17 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python实现串口自动触发工作的示例
2019/07/02 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
UNIX命令速查表
2012/03/10 面试题
淘宝店铺营销方案
2014/02/13 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
部门年终奖分配方案
2014/05/07 职场文书
应届生自荐信
2014/06/30 职场文书
物理课外活动总结
2014/08/27 职场文书
酒店前台辞职书
2015/02/26 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
Golang并发工具Singleflight
2022/05/06 Golang