在 ThinkPHP 6.0 中实现 excel 导出功能,需要使用第三方扩展phpspreadsheet。

安装和导入导出就不再讲解了,可以看这两篇:

《ThinkPHP6 excel 导入功能完整实现》

《ThinkPHP6 excel 导出功能完整实现》

本文主要讲解如何操作Excel文件表格。

1.PhpSpreadsheet 官网

Welcome to PhpSpreadsheet's documentation - PhpSpreadsheet Documentation

2.加载依赖

use PhpOffice\PhpSpreadsheet\Spreadsheet;

3.实例化

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

4.获取工作薄

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Sheet1');

5.获取、设置单元格

// 获取单元格
$cell = $sheet->getCell('A1');
// 设置值
$cell->setValue('张三');// 获取单元格
$cell = $sheet->getCellByColumnAndRow(1,2);
// 设置值
$cell->setValue('李四');// 设置单元格值(位置,值)
$sheet->setCellValue('A1','ID');
$sheet->setCellValue('B1','姓名');// 设置单元格值(列,行,值)
$sheet->setCellValueByColumnAndRow(1, 2, 1);
$sheet->setCellValueByColumnAndRow(2, 3, '张三');

6.设置文字样式

// 宋体 加粗 24号
$sheet->getStyle('A1')->getFont()->setName('宋体')->setBold(true)->setSize(24);

7.文字颜色

$sheet->setCellValue('A1', '张三');
$sheet->setCellValue('A2', '张三');
$sheet->setCellValue('B1', '李四');
$sheet->setCellValue('B2', '李四');// RGB颜色获取和设置
$sheet->getStyle('A1')->getFont()->getColor()->setRGB('red');
$sheet->getStyle('A2')->getFont()->getColor()->setRGB('AEEEEE');// AGRB颜色获取和设置
$sheet->getStyle('B1')->getFont()->getColor()->setARGB('72ece9');
$sheet->getStyle('B2')->getFont()->getColor()->setARGB('blue');

8.单元格格式

$sheet->setCellValue('A1','2023-2-21 10:10:10');$sheet->setCellValue('A2','199.98');$sheet->getStyle('A1')->getNumberFormat()
->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDD2);$sheet->getStyle('A2')->getNumberFormat()
->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00);

9.设置超链接

$sheet->setCellValue('A1','CSDN');
$sheet->getCell('A1')->getHyperlink()->setUrl('https://blog.csdn.net/json_ligege');

10.使用公式

$sheet->setCellValue('A1','名单');
$sheet->setCellValue('B1','分数');$sheet->setCellValueByColumnAndRow(1, 2, '张三');
$sheet->setCellValueByColumnAndRow(2, 2, '80');$sheet->setCellValueByColumnAndRow(1, 3, '李四');
$sheet->setCellValueByColumnAndRow(2, 3, '79');$sheet->setCellValueByColumnAndRow(1, 4, '王五');
$sheet->setCellValueByColumnAndRow(2, 4, '93');$sheet->setCellValueByColumnAndRow(1, 5, '赵六');
$sheet->setCellValueByColumnAndRow(2, 5, '68');$sheet->setCellValueByColumnAndRow(1, 6, '孙琦');
$sheet->setCellValueByColumnAndRow(2, 6, '89');$sheet->setCellValueByColumnAndRow(1, 7, '何八');
$sheet->setCellValueByColumnAndRow(2, 7, '90');$sheet->setCellValue('A8', '总数:');
$sheet->setCellValue('B8', '=SUM(B2:B7)');
$sheet->setCellValue('A9', '平均数:');
$sheet->setCellValue('B9', '=AVERAGE(B2:B7)');
$sheet->setCellValue('A10', '最小数:');
$sheet->setCellValue('B10', '=MIN(B2:B7)');
$sheet->setCellValue('A11', '最大数:');
$sheet->setCellValue('B11', '=MAX(B2:B7)');

11.批量赋值

$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', '姓名');
$sheet->setCellValue('C1', '性别');
$sheet->setCellValue('D1', '职业');// 参数(单元格数据,表示空白单元格的值,单元格开始位置)
$sheet->fromArray([[1, '李云龙', '男', '军人'],[2, '苏乞儿', '男', '乞丐'],[3, '周星驰', '男', '导演'],[4, '林允儿', '女', '演员'],],6,'A2'
);

12.合并、拆分单元格

// 合并单元格
$sheet->mergeCells('A1:F1');
$sheet->setCellValue('A1','标题');// 拆分单元格
$sheet->mergeCells('A2:F2');
$sheet->unmergeCells('A2:F2');

13.行操作

// 设置行高度
$sheet->getRowDimension(1)->setRowHeight(30);
// 设置默认行高
$sheet->getDefaultRowDimension()->setRowHeight(20);
// 获取行高度
echo $sheet->getRowDimension(1)->getRowHeight();
// 获取总行数
echo $sheet->getHighestRow();die;

14.列操作

// 设置列宽度
$sheet->getColumnDimension('A')->setWidth(50);
// 设置列自动宽度
$sheet->getColumnDimension('B')->setAutoSize(true);
// 设置列默认宽度
$sheet->getDefaultColumnDimension()->setWidth(20);
// 获取列宽度
echo $sheet->getColumnDimension('A')->getWidth();
// 获取总列数
echo $sheet->getHighestColumn();die;

15.单元格样式

$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', '姓名');
$sheet->setCellValue('C1', '性别');
$sheet->setCellValue('D1', '职业');$sheet->fromArray([[1, '李云龙', '男', '军人'],[2, '苏乞儿', '男', '乞丐'],[3, '周星驰', '男', '导演'],[4, '林允儿', '女', '演员'],],6,'A2'
);$styleArray = ['alignment' =>  ['horizontal' =>  'center',  // 水平居中'vertical' =>  'center',    // 垂直居中],'font' =>  ['name' =>  '宋体','bold' =>  true,'size' =>  22]
];$sheet->getStyle(1)->applyFromArray($styleArray);

总结:

ThinkPHP 6.0 phpspreadsheet操作Excel表格实例到此为止,目前总结了这些常用的操作,更多需要可以查看官网文档;本来是想做一个通过模板导出Excel文件的功能,但是没找到怎么做,不过目前也可以达到我想要的效果了;先这样吧,如果后面实现了,就再写一篇。

借鉴文章:

PHP使用PhpSpreadsheet操作Excel实例详解 - 腾讯云开发者社区-腾讯云

ThinkPHP 6.0 phpspreadsheet操作Excel表格实例相关推荐

  1. PHP 使用 PhpSpreadsheet 操作 excel 表格

    1 . 使用 命令 : composer require phpoffice/phpspreadsheet 安装 PhpSpreadsheet 2.读取excel表格中的内容 <?php/*** ...

  2. python excel操作单元格_python 操作excel表格的方法

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. ...

  3. 使用VC来操作Excel表格的源码

    下面的代码段是关于使用VC来操作Excel表格的的代码,应该对小伙伴们也有用. if (CoInitialize(NULL) != 0) { AfxMessageBox("初始化COM支持库 ...

  4. android jxl.jar 使用,使用jxl.jar在Android中操作Excel表格——重中之重——对隐藏表的处理...

    曾简单了解过C#,将Excel(数据库表)表中的数据导入到C#中,使用C#制作的图形化界面进行对Excel表中数据进行操作. 今天想试试,在Android中导入Excel表格进行操作.在网上查阅资料, ...

  5. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值

    [web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...

  6. java操作excel方法_Java实现操作excel表格的方法

    Java开发人员开发的项目需要自动读取数据,其实我们还需要用程序处理Excel数据表,接下来爱站技术频道小编就为大家讲解Java实现操作excel表格的方法吧! 一:查 (查找本地指定位置的excel ...

  7. python openpyxl操作Excel表格

    原创:未经允许不得转载,转载需标明出处 打算分为两个部分: 第一部分为:操作Excel表格 第二部分为:操作Excel图表 现在发布为第一部分内容 在最近的项目中的使用到了提取Android帧率日志, ...

  8. python操作xls_python操作excel表格的方法

    这篇文章我们来讲一下在网站建设中,python操作excel表格的方法.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通 ...

  9. Java 操作excel表格 - JXL(Java excel api)

    Java 操作excel表格 Java 操作 Excel 最常用的就是JXL(Java excel api)和POI,用起来挺简单的,不过相应的其功能也并非很强大,够用就行! 首先,下载jxl.jar ...

最新文章

  1. opencv 行与列
  2. 什么是AngularJS?它有哪些特性?
  3. I2C驱动程序框架probe道路
  4. host is not allowed to connect mysql
  5. VS2013编译OBS源码
  6. c语言灯塔案例求塔低数,C++:有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数...
  7. Python 数据结构之栈的实现
  8. mysql介质故障_pciessd异常readonly致mysql反复crash
  9. Django运算表达式与Q对象/F对象
  10. VS2010/MFC设置对话框控件的Tab顺序
  11. 防火墙——NAT穿越(IPSec3)
  12. 飞思卡尔单片机KEA128之ADC学习
  13. 经纬度PLT文件格式说明
  14. Robomongo查询总条数
  15. 【时间序列分析】06. AR(p)序列的性质
  16. STM8S003串口printf及帧判断
  17. yum update和yum upgrade的真正区别
  18. git如何将本地分支关联到远程分支
  19. 手把手教你设置公众号菜单栏
  20. 目标跟踪之LTMU:High-Performance Long-Term Tracking with Meta-Updater环境配置及代码运行

热门文章

  1. 理解STP及端口角色状态
  2. 开放式激光振镜+运动控制器(四):PSO位置同步输出在激光振镜加工中的应用
  3. 一些常用的PKCS 标准
  4. java Object类型的参数
  5. 京瓷4501i打印机扫描步骤_京瓷TASKalfa4501i说明书
  6. CSS画几何图形系列
  7. JS常用工具函数-中文按拼音排序
  8. Google-Chubby架构
  9. 【已解决】在react+ts中 atnd 用 upload 组件报错Failed to execute ‘readAsArrayBuffer,param 1 is notof type Blob
  10. TFN T700系列吹缆机产品怎么样?好不好用?