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 相关文章推荐
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
php 短链接算法收集与分析
Dec 30 PHP
PHP遍历数组的几种方法
Mar 22 PHP
PHP 文件系统详解
Sep 13 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
php时间函数用法分析
May 28 PHP
Yii CGridView用法实例详解
Jul 12 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 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调用新浪短链接API的方法
2014/11/08 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
jQuery 使用手册(五)
2009/09/23 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
深入理解node.js http模块
2018/01/24 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
js实现图片粘贴到网页
2019/12/06 Javascript
js实现小星星游戏
2020/03/23 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
python实现维吉尼亚算法
2019/03/20 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
中学生运动会通讯稿大全
2014/09/18 职场文书
大一学生个人总结
2015/02/15 职场文书
安全教育观后感
2015/06/17 职场文书
趣味运动会简讯
2015/07/20 职场文书
作文之亲情600字
2019/09/23 职场文书