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

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

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

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

在 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 数据库的功能。




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

相关推荐

扫码关注

qrcode

QQ交谈

回顶部