<?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);
最新评论: