php实现对excel
PHP 实现 Excel 操作
PHP 可以通过多种方式实现对 Excel 文件的读取、写入和操作。以下是几种常用的方法:
使用 PhpSpreadsheet 库
PhpSpreadsheet 是一个流行的 PHP 库,用于处理 Excel 文件(支持 .xlsx、.xls、.csv 等格式)。安装方法如下:
composer require phpoffice/phpspreadsheet
读取 Excel 文件
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
$spreadsheet = IOFactory::load("example.xlsx");
$sheet = $spreadsheet->getActiveSheet();
foreach ($sheet->getRowIterator() as $row) {
foreach ($row->getCellIterator() as $cell) {
echo $cell->getValue() . "\t";
}
echo "\n";
}
写入 Excel 文件

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('hello_world.xlsx');
使用 PHPExcel(旧版)
PHPExcel 是 PhpSpreadsheet 的前身,目前已停止维护,但部分旧项目可能仍在使用。
require 'PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B1', 'World');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('example.xlsx');
使用原生 PHP 导出 CSV
对于简单的数据导出,可以直接生成 CSV 文件:

$data = [
['Name', 'Email'],
['John Doe', 'john@example.com'],
['Jane Doe', 'jane@example.com']
];
$fp = fopen('export.csv', 'w');
foreach ($data as $row) {
fputcsv($fp, $row);
}
fclose($fp);
使用 Box/Spout 库
Box/Spout 是一个高性能的 Excel 和 CSV 读写库,适合处理大型文件。
composer require box/spout
读取 Excel
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
$reader = ReaderEntityFactory::createXLSXReader();
$reader->open('example.xlsx');
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
print_r($row->toArray());
}
}
$reader->close();
写入 Excel
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
$writer = WriterEntityFactory::createXLSXWriter();
$writer->openToFile('output.xlsx');
$row = WriterEntityFactory::createRowFromArray(['Name', 'Age']);
$writer->addRow($row);
$writer->close();
注意事项
- 处理大型 Excel 文件时,建议使用流式读取(如 Box/Spout)以避免内存问题。
- Excel 文件的格式(.xlsx、.xls、.csv)需要与库的支持能力匹配。
- 导出数据时注意字符编码问题,避免中文乱码。






