当前位置:首页 > 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 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searchT…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php 队列的实现

php 队列的实现

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

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php 实现定时任务

php 实现定时任务

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架来实现定时任务。以下是几种常见的实现方式: 使用 Cron 任务 Cron 是 Linux 系统的定时任务工具,可以定期…