使用composer安装phpoffice/phpspreadsheet
composer require phpoffice/phpspreadsheet
逐行插入数据:
<?php
//引入加载文件
require_once 'vendor/autoload.php';
// 创建一个新的Spreadsheet对象
$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
// 获取活动的工作表
$sheet = $spreadsheet->getActiveSheet();
$header=['姓名','年龄'];//头部标题
//设置头部标题
foreach ($header as $i => $Htitle) {
$column_cell = 'A'.($i+1);
// 设置头部标题
$sheet->setCellValue($column_cell, $Htitle);
}
//示例数据,视业务而定
$data=[
[
"name"=>"张三",
"age"=>18
],
[
"name"=>"李四",
"age"=>20
]
];
$num = 2; //从第二行开始填充数据
foreach ($data as $i => $row) {
$row_cell = $num + $i;
// 设置单元格内容
$sheet->setCellValue('A'.$row_cell, $row['name']);
$sheet->setCellValue('B'.$row_cell, $row['age']);
}
// // 获取单元格样式对象
// $style = $sheet->getStyle('A1');
// // 获取并设置对齐方式
// $alignment = $style->getAlignment();
// $alignment->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT);
// // 应用样式
// $style->setAlignment($alignment);
// 导出或保存文件
$writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->setUseDiskCaching(true);//启动磁盘缓存
$writer->setIncludeCharts(false);//关闭图表
$writer->setPreCalculateFormulas(false);//关闭公式预计算
$writer->save('example.xlsx');//保存文件路径需使用绝对路径
?>
批量插入数据:
<?php
//引入加载文件
require_once 'vendor/autoload.php';
// 创建一个新的Spreadsheet对象
$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
// 获取活动的工作表
$sheet = $spreadsheet->getActiveSheet();
//示例数据
$data = [
['姓名', '年龄', '城市'],
['张三', 25, '北京'],
['李四', 30, '上海'],
['王五', 28, '广州'],
];//填充数据应为二维数组
$sheet->fromArray($data, null, "A1");//从A1单元格开始填充
// 导出或保存文件
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');//使用工厂方法IOFactory::createWriter可创建导出不同格式的Excel文件
$writer->save('example.xlsx');//保存文件路径需使用绝对路径
?>
优化手段:分批处理数据: 不要一次性加载所有数据到内存中,尤其是数据量很大时。可以使用分页或分批加载数据,逐步写入Excel文件。
设置使用磁盘缓存: 在保存之前使用$writer->setUseDiskCaching(true),优化内存的使用和性能;
减少内存占用: 使用$writer->setPreCalculateFormulas(false),关闭公式预计算,减少内存占用。
减少内存占用: 使用$writer->setIncludeCharts(false),关闭图表,减少内存占用。
使用流式写入: 对于大量数据,考虑使用流式写入(streamed writing),例如使用PhpSpreadsheet 中的 PhpOffice\PhpSpreadsheet\Writer\Xlsx 类。
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!