ThinkPHP 6.0 phpspreadsheet操作Excel表格实例

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

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

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

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

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

目录

1.PhpSpreadsheet 官网

2.加载依赖

3.实例化

4.获取工作薄

5.获取、设置单元格

6.设置文字样式

7.文字颜色

RGB颜色获取和设置

AGRB颜色获取和设置

8.单元格格式

赋值

设置格式

9.设置超链接

10.使用公式

11.批量赋值

12.合并、拆分单元格

13.行操作

14.列操作

设置列宽度

设置列自动宽度

设置列默认宽度

获取列宽度

获取总列数

15.单元格样式

总结:


 

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.文字颜色

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);


获取列宽度

$sheet->getColumnDimension('A')->getWidth();


获取总列数

$sheet->getHighestColumn();

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实例详解 - 腾讯云开发者社区-腾讯云

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值