php如何导出excel表格数据_php导出excel库选择与代码示例

雪夜
发布: 2025-11-26 20:44:46
原创
118人浏览过
推荐使用PhpSpreadsheet或Spout导出Excel数据。1. PhpSpreadsheet功能强大,支持样式和最新格式,适合中小数据量;2. Spout轻量高效,内存占用低,适合大数据量导出。两者均通过Composer安装,代码简洁,可根据需求选择:需样式控制用PhpSpreadsheet,处理大量数据选Spout。

php如何导出excel表格数据_php导出excel库选择与代码示例

PHP导出Excel数据是Web开发中常见的需求,比如导出用户列表、订单报表等。实现方式有多种,选择合适的库能提升开发效率和文件兼容性。以下是主流的PHP导出Excel库对比与具体代码示例。

常用PHP导出Excel库对比

1. PHPExcel(已废弃)
曾是广泛使用的库,但项目已停止维护,不推荐新项目使用。

2. PhpSpreadsheet(PHPExcel继承者)
由PHPExcel团队开发,支持最新Excel格式(.xlsx),功能强大,社区活跃,推荐使用。

3. Spout
轻量级库,专为大数据设计,内存占用低,适合导出上万行数据,但样式支持较弱。

结论:中小数据量且需要样式控制用 PhpSpreadsheet;大数据量优先选 Spout

PhpSpreadsheet 导出示例

安装方式(使用 Composer):

composer require phpoffice/phpspreadsheet
登录后复制

基础导出代码:

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 创建新的电子表格
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// 设置表头
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '邮箱');

// 添加数据
$data = [
    ['张三', 28, 'zhangsan@example.com'],
    ['李四', 32, 'lisi@example.com'],
    ['王五', 25, 'wangwu@example.com']
];

$row = 2;
foreach ($data as $item) {
    $sheet->setCellValue('A' . $row, $item[0]);
    $sheet->setCellValue('B' . $row, $item[1]);
    $sheet->setCellValue('C' . $row, $item[2]);
    $row++;
}

// 输出为 Excel 文件
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="user_list.xlsx"');
header('Cache-Control: max-age=0');

$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
登录后复制

Spout 导出示例

安装 Spout:

立即学习PHP免费学习笔记(深入)”;

Glean
Glean

Glean是一个专为企业团队设计的AI搜索和知识发现工具

Glean 117
查看详情 Glean
composer require openspout/openspout
登录后复制

使用 Spout 快速导出:

<?php
require 'vendor/autoload.php';

use OpenSpout\Writer\WriterFactory;
use OpenSpout\Common\Type;

// 创建 XLSX 写入器
$writer = WriterFactory::create(Type::XLSX);
$writer->openToBrowser('order_list.xlsx'); // 直接下载

// 写入表头
$writer->addRow(['订单编号', '客户姓名', '金额', '日期']);

// 模拟数据
$data = [
    ['SO001', '张三', '99.99', '2024-04-01'],
    ['SO002', '李四', '150.00', '2024-04-02'],
    ['SO003', '王五', '200.50', '2024-04-03']
];

// 批量写入
foreach ($data as $row) {
    $writer->addRow($row);
}

$writer->close();
exit;
登录后复制

Spout 的优势在于处理大量数据时不会因内存溢出而崩溃,适合后台报表导出场景。

注意事项与建议

  • 导出前检查数据是否合法,避免空值或特殊字符导致格式异常
  • 大文件导出建议加缓存控制或分批读取数据库
  • 若需设置样式(如字体、背景色),优先选 PhpSpreadsheet
  • 中文文件名在 header 中可能乱码,可使用 urlencode 处理

基本上就这些。根据实际需求选择合适工具,中小项目用 PhpSpreadsheet 足够,数据量大考虑 Spout。两者都支持 Composer 管理,集成方便。

以上就是php如何导出excel表格数据_php导出excel库选择与代码示例的详细内容,更多请关注php中文网其它相关文章!

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号