PHP实现excel
PHP 实现 Excel 操作的方法
使用 PHPExcel 或 PhpSpreadsheet 库
PhpSpreadsheet 是 PHPExcel 的继任者,提供了强大的 Excel 文件读写功能。安装可通过 Composer:
composer require phpoffice/phpspreadsheet
读取 Excel 文件示例代码:
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
$spreadsheet = IOFactory::load("example.xlsx");
$worksheet = $spreadsheet->getActiveSheet();
echo $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 导出 CSV
对于简单数据导出,CSV 是轻量级替代方案:
$data = [
['Name', 'Email'],
['John', 'john@example.com'],
['Jane', 'jane@example.com']
];
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.csv"');
$output = fopen('php://output', 'w');
foreach ($data as $row) {
fputcsv($output, $row);
}
fclose($output);
使用 PHP 生成 XML 格式的 Excel
Excel 支持 XML 格式,可直接生成:

header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="file.xml"');
echo '<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet">
<Worksheet><Table>
<Row><Cell><Data ss:Type="String">Hello</Data></Cell></Row>
</Table></Worksheet></Workbook>';
使用第三方 API 服务
对于复杂需求,可考虑调用 Google Sheets API 或 Microsoft Graph API 等云端服务:
// Google Sheets API 示例
$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->addScope(Google_Service_Sheets::SPREADSHEETS);
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'your-spreadsheet-id';
$range = 'Sheet1!A1:B2';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
性能优化建议
处理大型 Excel 文件时启用缓存:
$cacheSettings = [
'directory' => __DIR__.'/cache'
];
\PhpOffice\PhpSpreadsheet\Settings::setCache(
new PhpOffice\PhpSpreadsheet\Cache\Filesystem($cacheSettings)
);
对于只读操作,使用快速模式:
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load("large_file.xlsx");





