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.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
处理单名多值表单的详解
Jun 08 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
php的mssql数据库连接类实例
Nov 28 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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代码的53条建议
2008/03/27 PHP
PHP cron中的批处理
2008/09/16 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
Python多进程原理与用法分析
2018/08/21 Python
Python中作用域的深入讲解
2018/12/10 Python
django 中QuerySet特性功能详解
2019/07/25 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
校长先进事迹材料
2014/02/01 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
节电标语大全
2014/06/23 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers