您现在的位置是:网站首页> 编程资料编程资料

PHP使用PhpSpreadsheet操作Excel实例详解_php技巧_

2023-05-25 528人已围观

简介 PHP使用PhpSpreadsheet操作Excel实例详解_php技巧_

本文实例讲述了PHP使用PhpSpreadsheet操作Excel。分享给大家供大家参考,具体如下:

一、PhpSpreadsheet 介绍

1、PhpSpreadsheet 是什么

PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式
PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到

  • 使用 PhpSpreadsheet 开发的PHP要求 7.1或更高版本
  • PhpSpreadsheet 支持链式操作
2、PhpSpreadsheet 支持的文件格式

在这里插入图片描述

3、PhpSpreadsheet 官方网址
4、PhpSpreadsheet 安装
  • composer require phpoffice/phpspreadsheet

二、基础知识

1、载入
2、获取工作簿
  • getActiveSheet
getActiveSheet(); 
3、获取单元格
  • 两种获取单元格方式
  • getCell
  • getCellByColumnAndRow
getActiveSheet(); # 获取单元格 $cell = $sheet->getCell('A1'); $cell = $sheet->getCellByColumnAndRow(1,1); 
4、设置单元格
  • setValue
  • 参数:单元格的值
getActiveSheet(); # 获取单元格 $cellA = $sheet->getCell('A1'); # 设置单元格值 $cellA->setValue('欧阳克'); # 获取单元格 $cellB = $sheet->getCellByColumnAndRow(1,2); # 设置单元格值 $cellB->setValue('黄蓉'); # 获取设置单元格,链式操作 $sheet->getCell('A3')->setValue('郭靖'); $sheet->getCellByColumnAndRow(1,4)->setValue('杨康'); 
5、获取单元格值
  • getValue 获取单元格值
  • getCoordinate 获取单元格坐标
getActiveSheet(); # 获取单元格 $cellA = $sheet->getCell('A1'); # 设置单元格值 $cellA->setValue('欧阳克'); echo '值: ', $cellA->getValue(),PHP_EOL; echo '坐标: ', $cellA->getCoordinate(); 
6、保存表格
getActiveSheet(); # 获取单元格 $cellA = $sheet->getCell('A1'); # 设置单元格值 $cellA->setValue('欧阳克'); # 获取单元格 $cellB = $sheet->getCellByColumnAndRow(1,2); # 设置单元格值 $cellB->setValue('黄蓉'); # 获取设置单元格,链式操作 $sheet->getCell('A3')->setValue('郭靖'); $sheet->getCellByColumnAndRow(1,4)->setValue('杨康'); # Xlsx类 将电子表格保存到文件 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); 

三、强化单元格

1、设置单元格
  • setCellValue
  • 参数1:单元格位置
  • 参数2:单元格的值
  • setCellValueByColumnAndRow
  • 参数1:列位置
  • 参数2:行位置
  • 参数3:单元格的值
getActiveSheet(); $sheet->setCellValue('A1','ID'); $sheet->setCellValue('B1','姓名'); $sheet->setCellValue('C1','年龄'); $sheet->setCellValue('D1','身高'); $sheet->setCellValueByColumnAndRow(1, 2, 1); $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克'); $sheet->setCellValueByColumnAndRow(3, 2, '18岁'); $sheet->setCellValueByColumnAndRow(4, 2, '188cm'); $sheet->setCellValueByColumnAndRow(1, 3, 2); $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉'); $sheet->setCellValueByColumnAndRow(3, 3, '17岁'); $sheet->setCellValueByColumnAndRow(4, 3, '165cm'); # Xlsx类 将电子表格保存到文件 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); 
2、单元格文字样式
  • getStyle 获取单元格样式
  • getFont 获取单元格文字样式
  • setBold 设置文字粗细
  • setName 设置文字字体
  • setSize 设置文字大小
getActiveSheet(); $sheet->setCellValue('A1','ID'); $sheet->setCellValue('B1','姓名'); $sheet->setCellValue('C1','年龄'); $sheet->setCellValue('D1','身高'); $sheet->setCellValueByColumnAndRow(1, 2, 1); $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克'); $sheet->setCellValueByColumnAndRow(3, 2, '18岁'); $sheet->setCellValueByColumnAndRow(4, 2, '188cm'); $sheet->setCellValueByColumnAndRow(1, 3, 2); $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉'); $sheet->setCellValueByColumnAndRow(3, 3, '17岁'); $sheet->setCellValueByColumnAndRow(4, 3, '165cm'); $sheet->getStyle('B2')->getFont()->setBold(true)->setName('宋体')->setSize(20); # Xlsx类 将电子表格保存到文件 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); 
3、单元格文字颜色
  • getColor() 获取坐标颜色
  • setRGB() 设置字体颜色
  • getRGB() 获取字体颜色
  • setARGB() 设置字体颜色
  • getARGB() 获取字体颜色
getActiveSheet(); $sheet->setCellValue('A1','ID'); $sheet->setCellValue('B1','姓名'); $sheet->setCellValue('C1','年龄'); $sheet->setCellValue('D1','身高'); $sheet->setCellValueByColumnAndRow(1, 2, 1); $sheet->setCellValueByColumnAndRow(2, 2, '欧阳克'); $sheet->setCellValueByColumnAndRow(3, 2, '18岁'); $sheet->setCellValueByColumnAndRow(4, 2, '188cm'); $sheet->setCellValueByColumnAndRow(1, 3, 2); $sheet->setCellValueByColumnAndRow(2, 3, '黄蓉'); $sheet->setCellValueByColumnAndRow(3, 3, '17岁'); $sheet->setCellValueByColumnAndRow(4, 3, '165cm'); $sheet->getStyle('B2')->getFont()->getColor()->setRGB('#AEEEEE'); echo $sheet->getStyle('B2')->getFont()->getColor()->getRGB(),PHP_EOL; $sheet->getStyle('B3')->getFont()->getColor()->setARGB('FFFF0000'); echo $sheet->getStyle('B3')->getFont()->getColor()->getARGB(); # Xlsx类 将电子表格保存到文件 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); 
4、单元格格式
  • getNumberFormat 获取格式
  • setFormatCode 设置格式
getActiveSheet(); $sheet->setCellValue('A1','2019-10-10 10:10:10'); $sheet->setCellValue('A2','2019-10-10 10:10:10'); $sheet->getStyle('A2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDD2); # Xlsx类 将电子表格保存到文件 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); 
  • setWrapText 设置文本里的\n符合为:换行
getActiveSheet(); $sheet->setCellValue('A1',"欧阳克\n黄蓉"); $sheet->getStyle('A1')->getAlignment()->setWrapText(true); # Xlsx类 将电子表格保存到文件 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); 
  • getHyperlink 获取单元格链接
  • setUrl 设置单元格链接
getActiveSheet(); $sheet->setCellValue('A1','www.php.cn'); $sheet->getCell('A1')->getHyperlink()->setUrl('http://www.php.cn'); # Xlsx类 将电子表格保存到文件 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save('1.xlsx'); 

四、批量操作

1、使用公式
getActiveSheet(); $sheet->setCellValue('A1','10'); $sheet->setCellValue('B1','15'); $sheet->setCellValue('C1','20'); $sheet->setCellValue('D1','25'); $sheet->setCellValue('E1','30'); $sheet->setCellValue('G1','35'); $sheet->setCellValue('A2', '总数:'); $sheet->setCellValue('B2', '=SUM(A1:G1)'); $sheet->setCellValue('A3', '平均数:'); $sheet->setCellValue('B3', '=AVERAGE(A1:G1)'); $sheet->setCellValue('A4', '最小数:'); $sheet->setCellValue('B4', '=MIN(A1:G1)'); $sheet->setCellValue('A5', '最大数:'); $sheet->setCellValue('B5', '=MAX(A1:G1)'); $sheet->setCellValue('A6', '最大数:'); $sheet->setCellValue('
                
                

-六神源码网