略微加速

略速 - 互联网笔记

PhpSpreadsheet中文文档 | 基础Spreadsheet开发使用示例

2021-01-20 leiting (3851阅读)

标签 PHP

<?php
use PhpOffice\PhpSpreadsheet\Spreadsheet;
// 实例化Spreadsheet对象
$spreadsheet = new Spreadsheet();

// 1获取活动工作薄
$sheet = $spreadsheet->getActiveSheet();

// 2获取单元格
$cell = $sheet->getCell('A1');   //方法1,左上顶点(A1)
$cell = $sheet->getCellByColumnAndRow(1,1); //方法2,左上顶点(1,1)

// 3给获取的单元格赋值
$cell->setValue('A1单元格内容');

// 3-1获取设置单元格,链式操作
$sheet->getCell('A3')->setValue('郭靖');
$sheet->getCellByColumnAndRow(1,4)->setValue('杨康');

// 3-2获取单元格
$cellA = $sheet->getCell('A1');
echo '值: ', $cellA->getValue(),PHP_EOL;
echo '坐标: ', $cellA->getCoordinate();   //获取单元格坐标

// 4 Xlsx类 将电子表格保存到文件
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('1.xlsx');

// 4-1 将表格直接输出下载
$filename = urlencode('文件名称.xlsx');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$filename.'"');
header('Cache-Control: max-age=0');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');//工厂类
$writer->save('php://output');

// 坐标单元格赋值
/**
 * 参数说明
 * 设置单元格
 * setCellValue(参数1,参数2)
 * 参数1:单元格位置左上顶点A1
 * 参数2:单元格的值
 */
$sheet->setCellValue('A1','ID');
$sheet->setCellValue('B1','姓名');
$sheet->setCellValue('C1','年龄');
$sheet->setCellValue('D1','身高');

/**
 * setCellValueByColumnAndRow(参数1,参数2,参数3)
 * 参数1:列位置,第一列值1
 * 参数2:行位置,第一行值1
 * 参数3:单元格的值
 */
$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');

/**
 * 赋值和类型,比如将数字指定为字符串格式,防止科学计数法显示
 * Data types类型:
 * const TYPE_STRING2 = 'str';
 * const TYPE_STRING = 's';
 * const TYPE_FORMULA = 'f';
 * const TYPE_NUMERIC = 'n';
 * const TYPE_BOOL = 'b';
 * const TYPE_NULL = 'null';
 * const TYPE_INLINE = 'inlineStr';
 * const TYPE_ERROR = 'e';
 */
$sheet->getCell('A1')->setValueExplicit($value, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$sheet->setCellValueExplicit('A1', $value, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$sheet->setCellValueExplicitByColumnAndRow(1, 1, $value, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);

/**
 *  单元格文字样式设置
 */

// getStyle 获取单元格样式
// getFont 获取单元格文字样式
// setBold 设置文字粗细
// setName 设置文字字体
// setSize 设置文字大小

$sheet->getStyle('B2')->getFont()->setBold(true)->setName('宋体')->setSize(20);

/**
 * 单元格文字颜色
 */
// getColor 获取坐标颜色
// setRGB设置字体颜色
// getRGB 获取字体颜色
// setARGB 设置字体颜色
// getARGB 获取字体颜色
$sheet->getStyle('B2')->getFont()->getColor()->setRGB('#AEEEEE');
$sheet->getStyle('B3')->getFont()->getColor()->setARGB('FFFF0000');

/**
 *单元格格式
 */
$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);


北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3