PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > 工作总结

PHP上传Excel文件导入数据到MySQL数据库示例

管理员 2025-03-09
工作总结
56

在 PHP 中实现上传 Excel 文件并将其数据导入到 MySQL 数据库,通常需要使用 PHP 的文件上传功能和第三方库(如 PhpSpreadsheet)来解析 Excel 文件。以下是完整的实现步骤:


1. 环境准备

  1. 安装 PhpSpreadsheet
    使用 Composer 安装 PhpSpreadsheet 库:

    bash
    复制
    composer require phpoffice/phpspreadsheet
  2. 创建数据库表
    假设我们要将 Excel 数据导入到 users 表中,表结构如下:

    sql
    复制
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) NOT NULL,
        age INT);

2. 前端:文件上传表单

创建一个 HTML 文件上传表单:

html
复制
<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>上传 Excel 文件</title></head><body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <label for="excel-file">选择 Excel 文件:</label>
        <input type="file" name="excel-file" id="excel-file" accept=".xls, .xlsx">
        <button type="submit">上传并导入</button>
    </form></body></html>

3. 后端:处理文件上传并导入数据

创建 upload.php 文件,处理文件上传和 Excel 数据导入。

php
复制
<?phprequire 'vendor/autoload.php'; // 引入 Composer 自动加载文件use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Spreadsheet;// 数据库配置$host = 'localhost';$dbname = 'your_database';$username = 'your_username';$password = 'your_password';try {
    // 连接数据库
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 检查文件是否上传成功
    if (isset($_FILES['excel-file']) && $_FILES['excel-file']['error'] === UPLOAD_ERR_OK) {
        $fileTmpPath = $_FILES['excel-file']['tmp_name']; // 临时文件路径
        $fileName = $_FILES['excel-file']['name']; // 文件名

        // 加载 Excel 文件
        $spreadsheet = IOFactory::load($fileTmpPath);
        $worksheet = $spreadsheet->getActiveSheet();

        // 遍历每一行数据(从第二行开始,假设第一行是表头)
        foreach ($worksheet->getRowIterator(2) as $row) {
            $cellIterator = $row->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(false);

            $data = [];
            foreach ($cellIterator as $cell) {
                $data[] = $cell->getValue(); // 获取单元格数据
            }

            // 假设 Excel 文件列顺序为:name, email, age
            $name = $data[0];
            $email = $data[1];
            $age = $data[2];

            // 插入数据库
            $stmt = $pdo->prepare("INSERT INTO users (name, email, age) VALUES (:name, :email, :age)");
            $stmt->execute([
                ':name' => $name,
                ':email' => $email,
                ':age' => $age,
            ]);
        }

        echo "数据导入成功!";
    } else {
        echo "文件上传失败!";
    }} catch (Exception $e) {
    echo "发生错误:" . $e->getMessage();}

4. 运行流程

  1. 用户通过前端表单上传 Excel 文件。

  2. 后端接收文件并使用 PhpSpreadsheet 解析 Excel 数据。

  3. 将解析后的数据逐行插入到 MySQL 数据库中。


5. 示例 Excel 文件格式

假设 Excel 文件内容如下:

nameemailage
Alicealice@example.com25
Bobbob@example.com30
Charliecharlie@example.com22

6. 注意事项

  1. 文件类型验证
    确保上传的文件是 Excel 文件(.xls 或 .xlsx)。

    php
    复制
    $allowedTypes = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];if (!in_array($_FILES['excel-file']['type'], $allowedTypes)) {
        die("仅支持上传 Excel 文件!");}
  2. 数据验证
    在插入数据库之前,验证数据的合法性(如邮箱格式、年龄是否为数字等)。

  3. 性能优化
    如果数据量较大,可以使用批量插入的方式提高性能。

  4. 错误处理
    捕获并处理可能出现的异常(如文件解析错误、数据库插入失败等)。


通过以上步骤,你可以实现一个简单的 PHP 上传 Excel 文件并导入数据到 MySQL 数据库的功能。



本文关键词: PHP 上传 Excel 文件 导入 数据

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部