当前位置:首页 > 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实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…