php实现对excel
PHP 操作 Excel 的方法
PHP 可以通过多种库实现对 Excel 文件的读取、写入和修改操作。以下是几种常用方法:
使用 PhpSpreadsheet 库
PhpSpreadsheet 是 PHPExcel 的继任者,功能强大且维护良好。安装方法:
composer require phpoffice/phpspreadsheet
读取 Excel 文件示例代码:
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
$spreadsheet = IOFactory::load("example.xlsx");
$worksheet = $spreadsheet->getActiveSheet();
$cellValue = $worksheet->getCell('A1')->getValue();
写入 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');
使用 PHP_XLSXWriter 库
XLSXWriter 是一个轻量级的库,适合生成 Excel 文件。安装方法:
composer require mk-j/php_xlsxwriter
生成 Excel 示例代码:
require_once 'xlsxwriter.class.php';
$writer = new XLSXWriter();
$writer->writeSheetRow('Sheet1', ['Name','Age']);
$writer->writeSheetRow('Sheet1', ['John',25]);
$writer->writeToFile('output.xlsx');
使用 PHPExcel(已弃用)
虽然 PHPExcel 已被 PhpSpreadsheet 取代,但一些旧系统可能仍在使用。安装方法:

composer require phpoffice/phpexcel
读取示例代码:
require_once 'PHPExcel/IOFactory.php';
$objPHPExcel = PHPExcel_IOFactory::load("example.xls");
$sheetData = $objPHPExcel->getActiveSheet()->toArray();
使用 CSV 作为中间格式
对于简单的数据交换,可以先将 Excel 转换为 CSV 处理:
$csvFile = fopen('data.csv', 'w');
fputcsv($csvFile, ['Header1', 'Header2']);
fputcsv($csvFile, ['Value1', 'Value2']);
fclose($csvFile);
使用 COM 对象(仅限 Windows)
在 Windows 服务器上可以通过 COM 对象直接操作 Excel:
$excel = new COM("Excel.Application") or die("无法启动 Excel");
$workbook = $excel->Workbooks->Open("C:\\path\\to\\file.xlsx");
$worksheet = $workbook->Worksheets(1);
$value = $worksheet->Range("A1")->Value;
$excel->Quit();
性能优化建议
处理大型 Excel 文件时使用分块读取:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setReadDataOnly(true);
$chunkFilter = new ChunkReadFilter();
$reader->setReadFilter($chunkFilter);
$spreadsheet = $reader->load("large_file.xlsx");
导出时考虑内存限制:
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->setPreCalculateFormulas(false);
$writer->save('output.xlsx');
常见格式处理
设置单元格格式:
$spreadsheet->getActiveSheet()->getStyle('A1')
->getFont()->setBold(true)
->setSize(12)
->setName('Arial');
合并单元格:
$spreadsheet->getActiveSheet()->mergeCells('A1:B1');
添加公式:
$spreadsheet->getActiveSheet()->setCellValue('C1', '=SUM(A1:B1)');
这些方法覆盖了 PHP 操作 Excel 的主要需求,从简单的读写到复杂格式处理。根据项目需求选择合适的库和方法。






