• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

没有了
Prev

PhpSpreadsheet

Data: 2021-10-03 17:52:57Form: JournalClick: 50

# PhpSpreadsheet


# 一、PhpSpreadsheet 介绍

# 1、PhpSpreadsheet 是什么

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

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

# 2、PhpSpreadsheet 支持的文件格式

格式
Open Document Format/OASIS (.ods)
Office Open XML (.xlsx) Excel 2007 and above
BIFF 8 (.xls) Excel 97 and above
BIFF 5 (.xls) Excel 95
SpreadsheetML (.xml) Excel 2003
Gnumeric
HTML
SYLK
CSV
PDF

# 3、PhpSpreadsheet 官方网址

  • https://phpspreadsheet.readthedocs.io

# 4、PhpSpreadsheet 安装

  • composer require phpoffice/phpspreadsheet

# 二、基础知识

# 1、载入

<?php
    # 载入composer自动加载文件 require 瑞块儿
    require 'vendor/autoload.php';  autoload 奥特老特
    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();

# 2、获取工作簿

  • getActiveSheet
<?php
    # 载入composer自动加载文件
    require 'vendor/autoload.php';
    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();
    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

# 3、获取单元格

  • 两种获取单元格方式
    • getCell
    • getCellByColumnAndRow
<?php
    # 载入composer自动加载文件
    require 'vendor/autoload.php';
    # 给类文件的命名空间起个别名
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    # 实例化 Spreadsheet 对象
    $spreadsheet = new Spreadsheet();
    # 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();
    # 获取单元格
    $cell = $sheet->getCell('A1');
    $cell = $sheet->getCellByColumnAndRow(1,1);

# 4、设置单元格

  • setValue
    • 参数:单元格的值
<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->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 获取单元格坐标 可窝的奶特
<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->getActiveSheet();

	# 获取单元格
	$cellA = $sheet->getCell('A1');
	# 设置单元格值
	$cellA->setValue('欧阳克');

	echo '值: ', $cellA->getValue(),PHP_EOL;
	echo  '坐标: ', $cellA->getCoordinate();

# 6、保存表格

<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->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:单元格的值
<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->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 设置文字大小
<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->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() 获取字体颜色
<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->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 设置格式
<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->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 符合为:换行
<?php
	# 载入composer自动加载文件
	require 'vendor/autoload.php';
	# 给类文件的命名空间起个别名
	use PhpOffice\PhpSpreadsheet\Spreadsheet;
	# 实例化 Spreadsheet 对象
	$spreadsheet = new Spreadsheet();
	# 获取活动工作薄
	$sheet = $spreadsheet->getActiveSheet();

	$sheet->setCellValue('A1',"欧阳克\n黄蓉");
	$sheet->getStyle('A1')->getAlignment()->setWrapText(true);

	# Xlsx类 将电子表格保存到文件
	use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
	$writer = new Xlsx($spreadsheet);
	$writer
                
                
                
                
                
                
              
Name:
<提交>