PHP操作Excel文件:导入数据库与导出报表的两种方案
本文介绍了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的相关资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









