PHP操作Excel文件:导入数据库与导出报表的两种方案

小满
小满
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍了PHP环境下将Excel数据导入MySQL数据库以及从数据库导出报表为Excel文件的两种常见实现方式。重点解析了基于第三方组件的读取逻辑以及利用HTTP Header配合制表符分隔符生成Excel文件的“轻量级”方案,帮助开发者快速理解底层原理。

使用组件将Excel导入数据库

在处理历史项目或特定格式需求时,常需使用专门的类库来解析Excel文件。以下方法适用于较老版本的 .xls 格式文件,核心在于实例化读取对象并遍历工作表数据。

第1步:初始化读取对象与环境

首先引入支持Excel读取的外部类文件(如 reader.php),并实例化操作对象。需配置输出编码以防止中文乱码。

<?php
require_once 'reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('utf-8');

第2步:读取文件并连接数据库

指定Excel文件路径进行读取,同时建立与MySQL数据库的连接。注意此处使用了已弃用的 mysql_* 扩展,实际生产环境应使用 PDO 或 MySQLi。

$data->read("data/Excel/{$filename}.xls");
$db = mysql_connect('localhost', '用户名', '密码') or die("Could not connect to database.");
mysql_query("set names 'utf8'");
mysql_select_db('数据库名');
error_reporting(E_ALL ^ E_NOTICE);

第3步:遍历数据并执行插入

通过 $data->sheets[0]['cells'][行][列] 结构获取单元格值。在实际操作中,需将这些值组合成 INSERT 语句存入数据库。

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
    // 示例:获取特定列的值
    $value = $data->sheets[0]['cells'][$i][列数];
    
    // 构造SQL插入语句(需确保数据清洗防注入)
    // $sql = "INSERT INTO table_name VALUES (...)";
    // mysql_query($sql);
}

利用Header响应头实现数据导出至Excel

对于不需要复杂样式、仅涉及纯文本数据的导出需求,可以通过设置 HTTP 响应头,让浏览器将内容以 Excel 格式下载。这种方法无需引入庞大的第三方库。

第1步:设置Content-Type和Disposition

关键步骤是声明 MIME 类型为 application/vnd.ms-excel,并指定文件名为 .xls 格式。

header('Content-type: text/html; charset=utf-8');
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
header("Content-Disposition:attachment;filename=export_data.xls");

第2步:查询数据并格式化输出

从数据库获取结果集后,利用制表符 (\t) 作为列分隔符,换行符 (\n) 作为行分隔符,直接输出到页面。Excel 会自动识别这些分隔符。

<?php
$conn = mysql_connect("localhost", "root", "数据库密码") or die("不能连接数据库");
mysql_select_db("数据库名", $conn);
mysql_query("set names 'UTF-8'");

$sql = "SELECT * FROM 表名 WHERE 条件";
$result = mysql_query($sql);

// 输出表头
$headings = array('ID', '名称', '数值');
echo implode("\t", $headings) . "\n";

// 输出数据行
while($row = mysql_fetch_array($result)){
    echo $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
}
?>

注意事项与技术演进

  • 扩展弃用警告:原文使用的 mysql_*_function 函数组已在 PHP 5.5 中废弃,并在 PHP 7.0 中移除。新代码必须迁移至 mysqli 或 PDO。
  • 文件格式限制:上述导出方法本质上生成的是 .xls 文件,虽然兼容性较好,但不支持 .xlsx 的高级特性(如图形、多Sheet)。若需处理 .xlsx,推荐使用 PhpSpreadsheet。
  • 安全性:导入时需对 Excel 数据进行严格校验,防止 SQL 注入;导出的文件名应避免包含特殊字符导致的路径穿越问题。

以上就是PHP将Excel导入数据库及数据库数据导出至Excel的详细内容,更多关于PHP操作Excel的相关资料请关注本站其它相关文章!

本站声明

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

Python 相关产品和应用

全部下载

专题列表