安装
使用 Composer 安装 PHPSpreadSheet:
composer require phpoffice/phpspreadsheet
基本用法
下面的示例演示了如何使用 PHPSpreadSheet 创建一个简单的电子表格:
<?php
declare(strict_types=1);
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 创建一个新的电子表格
$spreadsheet = new Spreadsheet;
// 获取活动单元格
$sheet = $spreadsheet->getActiveSheet;
// 设置单元格 A1 的值
$sheet->setCellValue('A1', '项目名称');
// 设置 A 列的列宽
$sheet->getColumnDimension('A')->setWidth(100);
// 设置第一行的高度
$sheet->getRowDimension(1)->setRowHeight(20);
// 设置单元格 B1 的值
$sheet->setCellValue('B1', '操作人');
// 设置 B 列的列宽
$sheet->getColumnDimension('B')->setWidth(20);
// 设置单元格 C1 的值
$sheet->setCellValue('C1', '检测量');
// 设置 C 列的列宽
$sheet->getColumnDimension('C')->setWidth(10);
// 设置标题样式
$titleStyle = [
'alignment' => [
'horizontal' => 'center',
'vertical' => 'center',
],
'font' => [
'name' => '黑体',
'bold' => false,
'size' => 10,
],
];
// 设置正文样式
$bodyStyle = [
'alignment' => [
'horizontal' => 'left',
'vertical' => 'center',
],
'font' => [
'name' => '微软雅黑',
'bold' => false,
'size' => 10,
],
];
// 设置 A1 单元格的标题样式
$sheet->getStyle('A1')->applyFromArray($titleStyle);
// 设置 B1 单元格的标题样式
$sheet->getStyle('B1')->applyFromArray($titleStyle);
// 设置 C1 单元格的标题样式
$sheet->getStyle('C1')->applyFromArray($titleStyle);
// 创建一个 Writer 实例
$writer = new Xlsx($spreadsheet);
// 保存电子表格到文件
$writer->save('export.xlsx');
导出数据
下面的示例演示了如何使用 PHPSpreadSheet 从数据库中导出数据到电子表格:
<?php
declare(strict_types=1);
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 查询要导出的数据
$data = Db::query('select project, price from xiangmu');
// 创建一个新的电子表格
$spreadsheet = new Spreadsheet;
// 获取活动单元格
$sheet = $spreadsheet->getActiveSheet;
// 设置单元格 A1 的值
$sheet->setCellValue('A1', '项目名称');
// 设置 A 列的列宽
$sheet->getColumnDimension('A')->setWidth(100);
// 设置第一行的高度
$sheet->getRowDimension(1)->setRowHeight(20);
// 设置单元格 B1 的值
$sheet->setCellValue('B1', '操作人');
// 设置 B 列的列宽
$sheet->getColumnDimension('B')->setWidth(20);
// 设置单元格 C1 的值
$sheet->setCellValue('C1', '检测量');
// 设置 C 列的列宽
$sheet->getColumnDimension('C')->setWidth(10);
// 设置标题样式
$titleStyle = [
'alignment' => [
'horizontal' => 'center',
'vertical' => 'center',
],
'font' => [
'name' => '黑体',
'bold' => false,
'size' => 10,
],
];
// 设置正文样式
$bodyStyle = [
'alignment' => [
'horizontal' => 'left',
'vertical' => 'center',
],
'font' => [
'name' => '微软雅黑',
'bold' => false,
'size' => 10,
],
];
// 设置 A1 单元格的标题样式
$sheet->getStyle('A1')->applyFromArray($titleStyle);
// 设置 B1 单元格的标题样式
$sheet->getStyle('B1')->applyFromArray($titleStyle);
// 设置 C1 单元格的标题样式
$sheet->getStyle('C1')->applyFromArray($titleStyle);
// 将数据写入电子表格
$i = 2;
foreach ($data as $row) {
$sheet->setCellValue('A' . $i, $row['project']);
$sheet->setCellValue('B' . $i, $row['price']);
$i++;
}
// 创建一个 Writer 实例
$writer = new Xlsx($spreadsheet);
// 保存电子表格到文件
$writer->save('export.xlsx');
导入数据
下面的示例演示了如何使用 PHPSpreadSheet 从电子表格中导入数据到数据库:
<?php
declare(strict_types=1);
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
// 获取电子表格文件
$file = request->file('file');
// 加载电子表格
$spreadsheet = IOFactory::load($file);
// 获取活动单元格
$sheet = $spreadsheet->getActiveSheet;
// 获取数据范围
$range = $sheet-&>calculateWorksheetDimension;
// 逐行读取数据
for ($i = 2; $i <= $range-&>getRow; $i++) {
$project = $sheet-&>getCell('A' . $i)-&>getValue;
$price = $sheet-&>getCell('B' . $i)-&>getValue;
// 将数据插入数据库
Db::insert('xiangmu', ['project' =&> $project, 'price' =&> $price]);
}
总结
这就是 PHPSpreadSheet的基本用法。更多信息,请参考官方文档:www.tstingmi.com 提供内容。