PHP导出Excel的两种简单方法:直接下载与表格模板

凌晨两点半
凌晨两点半
发布时间:2026-10-14 | 5人浏览过
原创

在开发过程中,有时需要将数据库查询结果导出为 Excel 文件,但不想引入繁重的第三方类库。本文将介绍两种利用 PHP 原生特性实现简单导出操作的方法。

原理与准备

要将内容以 Excel (.xls) 文件格式输出到浏览器,核心在于正确设置 HTTP 响应头部,通知客户端接收的内容是二进制流且类型为 Microsoft Excel。随后,只需构造好对应的内容即可。

方法一:基于制表符与换行的纯文本导出

这是最简单的一种方式。通过在字符串中使用 \t(水平制表符)来表示列的分割,使用 \n(换行符)来表示行的分割。虽然这种方法生成的不是真正的 XML 格式的 Excel 文件,但大多数版本的 Excel 都能正确识别并以表格形式打开。

第1步:设置HTTP头部参数

首先,通过 header() 函数声明 Content-Type 和 Content-Disposition:

  • Content-Type:设置为 application/vnd.ms-excel,表示这是一个 Excel 文件。
  • Content-Disposition:设置为 attachment; filename=test.xls,提示浏览器以下载附件形式打开,并指定默认文件名。

第2步:构造并输出表格数据

使用双引号字符串(支持转义字符),按行输出数据。每两个数据字段之间用 \t 分隔,每一行结束时加 \n。

代码如下:
<?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=test.xls");

// 模拟导出数据,实际应用中可替换为数据库查询结果
// 字段1\t字段2\n
for ($i = 0; $i < 6; $i++) {
    echo "test1\t";
    echo "test2\t\n";
}
?>

运行上述代码后,浏览器会直接触发下载“test.xls”文件。双击打开该文件,可以看到内容被正确解析为两列六行的表格:

方法二:基于HTML表格的简单导出

如果数据内容较为复杂或包含特殊符号,纯文本方式可能会出现错位。此时可以将数据包装在标准的 HTML <table>、<tr> 和 <td> 标签中,并将其 MIME 类型设为 Excel。这种方式生成的 .xls 文件兼容性更好。

第1步:准备HTML表格结构

使用 PHP 动态生成一个 HTML 表格字符串。确保每个单元格都被 <td> 包裹,表格整体嵌套在 <table> 中。

<table border="1">
    <tr>
        <td><b>Name</b></td>
        <td><b>Age</b></td>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>25</td>
    </tr>
</table>

第2步:修改头部并输出

除了头部设置外,无需额外操作。PHP 会将 HTML 源码作为 Excel 源文件传输给浏览器,Excel 会自动将其渲染为可视化表格。

排错与建议

如果下载的 Excel 文件无法打开,请检查以下几点:

  • BOM头干扰:如果在 PHP 脚本开始前有任何空格或空白符(如 BOM),会导致文件损坏。建议在第一行
  • 扩展名问题:虽然使用 .xls 扩展名,但实际内部结构可能不同。对于更高版本的 Office (2007+),建议使用 .xlsx 配合相应的 XML 生成逻辑,或者直接使用 spreadsheet 等专业类库进行大规模数据处理。
  • 中文乱码:确保 PHP 文件和输出编码一致,推荐使用 UTF-8。

以上就是PHP生成excel文件的详细内容,更多关于PHP简单处理表格数据的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表