当前位置:首页 > PHP

php实现excel导入数据库

2026-02-13 22:21:40PHP

PHP 实现 Excel 导入数据库

使用 PHPExcel 或 PhpSpreadsheet 库

PhpSpreadsheet 是 PHPExcel 的继承者,推荐使用 PhpSpreadsheet 来处理 Excel 文件。可以通过 Composer 安装:

composer require phpoffice/phpspreadsheet

读取 Excel 文件并将数据插入数据库的示例代码:

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;

// 数据库连接
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

// 加载 Excel 文件
$spreadsheet = IOFactory::load('example.xlsx');
$worksheet = $spreadsheet->getActiveSheet();

// 遍历行
foreach ($worksheet->getRowIterator() as $row) {
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false);

    $data = [];
    foreach ($cellIterator as $cell) {
        $data[] = $cell->getValue();
    }

    // 插入数据库
    $stmt = $db->prepare("INSERT INTO table_name (col1, col2, col3) VALUES (?, ?, ?)");
    $stmt->execute($data);
}

使用 Laravel Excel 包(Laravel 框架)

对于 Laravel 项目,可以使用 maatwebsite/excel 包:

php实现excel导入数据库

composer require maatwebsite/excel

创建导入类:

namespace App\Imports;
use Maatwebsite\Excel\Concerns\ToModel;

class UsersImport implements ToModel
{
    public function model(array $row)
    {
        return new User([
            'name' => $row[0],
            'email' => $row[1],
        ]);
    }
}

在控制器中使用:

php实现excel导入数据库

use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;

public function import() 
{
    Excel::import(new UsersImport, 'users.xlsx');
    return redirect('/')->with('success', 'All good!');
}

使用 SimpleXLSX 库(轻量级方案)

对于简单的 Excel 文件,可以使用 SimpleXLSX:

require_once 'simplexlsx.class.php';

if ($xlsx = SimpleXLSX::parse('example.xlsx')) {
    $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

    foreach ($xlsx->rows() as $row) {
        $stmt = $db->prepare("INSERT INTO table_name (col1, col2) VALUES (?, ?)");
        $stmt->execute([$row[0], $row[1]]);
    }
} else {
    echo SimpleXLSX::parseError();
}

处理 CSV 文件

如果数据是 CSV 格式,可以直接使用 PHP 内置函数:

$file = fopen('data.csv', 'r');
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

while (($row = fgetcsv($file)) !== false) {
    $stmt = $db->prepare("INSERT INTO table_name (col1, col2) VALUES (?, ?)");
    $stmt->execute([$row[0], $row[1]]);
}

fclose($file);

注意事项

  • 验证数据格式和类型
  • 处理可能的空值
  • 考虑使用事务确保数据完整性
  • 对于大文件,考虑分块处理
  • 添加适当的错误处理机制
  • 注意文件上传安全,验证文件类型和内容

标签: 数据库php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (H…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n!…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Rat…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必…