在 ThinkPHP 6.0 中实现 excel 导出功能,需要使用第三方扩展phpspreadsheet。
安装和导入导出就不再讲解了,可以看这两篇:
《ThinkPHP6 excel 导入功能完整实现》
《ThinkPHP6 excel 导出功能完整实现》
本文主要讲解如何操作Excel文件表格。
Welcome to PhpSpreadsheet's documentation - PhpSpreadsheet Documentation
use PhpOffice\PhpSpreadsheet\Spreadsheet;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Sheet1');
// 获取单元格
$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, '张三');
// 宋体 加粗 24号
$sheet->getStyle('A1')
->getFont()
->setName('宋体')
->setBold(true)
->setSize(24);
$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');
$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);
$sheet->setCellValue('A1','CSDN');
$sheet->getCell('A1')->getHyperlink()->setUrl('https://blog.csdn.net/json_ligege');
$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)');
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', '姓名');
$sheet->setCellValue('C1', '性别');
$sheet->setCellValue('D1', '职业');
// 参数(单元格数据,表示空白单元格的值,单元格开始位置)
$sheet->fromArray(
[
[1, '李云龙', '男', '军人'],
[2, '苏乞儿', '男', '乞丐'],
[3, '周星驰', '男', '导演'],
[4, '林允儿', '女', '演员'],
],
6,
'A2'
);
// 合并单元格
$sheet->mergeCells('A1:F1');
$sheet->setCellValue('A1','标题');
// 拆分单元格
$sheet->mergeCells('A2:F2');
$sheet->unmergeCells('A2:F2');
// 设置行高度
$sheet->getRowDimension(1)->setRowHeight(30);
// 设置默认行高
$sheet->getDefaultRowDimension()->setRowHeight(20);
// 获取行高度
echo $sheet->getRowDimension(1)->getRowHeight();
// 获取总行数
echo $sheet->getHighestRow();die;
// 设置列宽度
$sheet->getColumnDimension('A')->setWidth(50);
// 设置列自动宽度
$sheet->getColumnDimension('B')->setAutoSize(true);
// 设置列默认宽度
$sheet->getDefaultColumnDimension()->setWidth(20);
// 获取列宽度
echo $sheet->getColumnDimension('A')->getWidth();
// 获取总列数
echo $sheet->getHighestColumn();die;
$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实例详解 - 腾讯云开发者社区-腾讯云