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 相关文章推荐
php时区转换转换函数
Jan 07 PHP
php命令行用法入门实例教程
Oct 27 PHP
Windows7下的php环境配置教程
Feb 28 PHP
PHP概率计算函数汇总
Sep 13 PHP
php 多文件上传的实现实例
Oct 23 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
PHP+JS实现的实时搜索提示功能
Mar 13 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
Laravel 实现添加多语言提示信息
Oct 25 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开启gzip页面压缩实例代码
2010/03/11 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
php读取csc文件并输出
2015/05/21 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
python类继承用法实例分析
2015/05/27 Python
python图像处理之反色实现方法
2015/05/30 Python
python生成圆形图片的方法
2020/03/25 Python
python读取Excel实例详解
2018/08/17 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
python定时任务 sched模块用法实例
2019/11/04 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
pytorch中index_select()的用法详解
2021/01/06 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
有模特经验的简历自我评价
2013/09/19 职场文书
八年级音乐教学反思
2014/01/09 职场文书
决心书范文
2014/03/11 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
golang slice元素去重操作
2021/04/30 Golang
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers