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中的实现trim函数代码
Mar 19 PHP
56.com视频采集接口程序(PHP)
Sep 22 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
php提供实现反射的方法和实例代码
Sep 17 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
跟我学Laravel之安装Laravel
2014/10/15 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
理解JavaScript中的事件
2006/09/23 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
九步学会Python装饰器
2015/05/09 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
解析python的局部变量和全局变量
2019/08/15 Python
如何在django中添加日志功能
2020/02/06 Python
pandas的resample重采样的使用
2020/04/24 Python
python用700行代码实现http客户端
2021/01/14 Python
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
护士实习鉴定范文
2013/12/22 职场文书
优秀村官事迹材料
2014/01/10 职场文书
远程研修随笔感言
2014/02/10 职场文书
海飞丝广告词
2014/03/20 职场文书
学生保证书范文
2014/04/28 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
学雷锋活动简报
2015/07/20 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
入门学习Go的基本语法
2021/07/07 Golang
Python字符串常规操作小结
2022/04/03 Python