用php代码写一个导出excel的功能,要求高性能,能导出单表100万条数据
时间: 2023-12-14 19:40:26 浏览: 26
要实现高性能的Excel导出功能,可以使用PHPExcel或PhpSpreadsheet库,以下是一个简单的示例代码:
```php
<?php
require_once 'vendor/autoload.php'; // 引入库文件
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 模拟100万条数据
$data = array();
for ($i = 1; $i <= 1000000; $i++) {
$data[] = array(
'id' => $i,
'name' => 'user' . $i,
'age' => rand(18, 60),
'gender' => rand(0, 1) ? 'male' : 'female',
'address' => 'address' . $i,
);
}
// 创建Excel对象
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// 设置表头
$header = array('ID', 'Name', 'Age', 'Gender', 'Address');
$column = 'A';
foreach ($header as $h) {
$sheet->setCellValue($column . '1', $h);
$column++;
}
// 填充数据
$row = 2;
foreach ($data as $d) {
$sheet->setCellValue('A' . $row, $d['id']);
$sheet->setCellValue('B' . $row, $d['name']);
$sheet->setCellValue('C' . $row, $d['age']);
$sheet->setCellValue('D' . $row, $d['gender']);
$sheet->setCellValue('E' . $row, $d['address']);
$row++;
}
// 输出Excel文件
$writer = new Xlsx($spreadsheet);
$filename = 'data.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
```
该代码使用PhpSpreadsheet库创建Excel对象,并使用循环填充表格数据。最后通过设置HTTP头信息,将生成的Excel文件输出给用户进行下载。这种方式可以在不占用过多内存的情况下,高效地导出大量数据。