当前位置:首页 > PHP

php实现excel导入数据库

2026-02-27 21:15:43PHP

使用PHPExcel库实现Excel导入数据库

PHPExcel是一个流行的PHP库,用于处理Excel文件。虽然该库已停止维护,但仍然是许多项目中的选择。

安装PHPExcel库

composer require phpoffice/phpexcel

读取Excel文件并插入数据库

require_once 'vendor/autoload.php';
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$inputFileName = 'file.xlsx';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

$sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);

foreach($sheetData as $row) {
    $stmt = $db->prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
    $stmt->execute([$row['A'], $row['B']]);
}

使用PhpSpreadsheet实现Excel导入数据库

PhpSpreadsheet是PHPExcel的现代替代品,推荐在新项目中使用。

安装PhpSpreadsheet

php实现excel导入数据库

composer require phpoffice/phpspreadsheet

读取Excel并导入数据库示例

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

$spreadsheet = IOFactory::load("example.xlsx");
$worksheet = $spreadsheet->getActiveSheet();

$rows = $worksheet->toArray();

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
foreach($rows as $row) {
    $stmt = $pdo->prepare("INSERT INTO products (name, price) VALUES (?, ?)");
    $stmt->execute([$row[0], $row[1]]);
}

处理上传的Excel文件

创建一个HTML表单接收Excel文件

<form method="post" enctype="multipart/form-data">
    <input type="file" name="excel_file">
    <button type="submit">Upload</button>
</form>

处理上传的文件

php实现excel导入数据库

if(isset($_FILES['excel_file'])) {
    $file = $_FILES['excel_file']['tmp_name'];
    $spreadsheet = IOFactory::load($file);
    // 处理数据逻辑...
}

数据验证和错误处理

在导入前验证数据

foreach($rows as $index => $row) {
    if(empty($row[0]) || !is_numeric($row[1])) {
        continue; // 跳过无效行
    }
    // 处理有效数据...
}

使用事务确保数据完整性

$pdo->beginTransaction();
try {
    foreach($rows as $row) {
        // 插入数据
    }
    $pdo->commit();
} catch(Exception $e) {
    $pdo->rollBack();
    echo "导入失败: " . $e->getMessage();
}

性能优化建议

对于大数据量Excel文件,使用分块处理

$chunkSize = 500;
$totalRows = count($rows);
for($i = 0; $i < $totalRows; $i += $chunkSize) {
    $chunk = array_slice($rows, $i, $chunkSize);
    // 处理当前分块...
}

使用预处理语句批量插入

$stmt = $pdo->prepare("INSERT INTO table (col1, col2) VALUES (?, ?)");
foreach($rows as $row) {
    $stmt->execute([$row[0], $row[1]]);
}

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

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php 实现验证码

php 实现验证码

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

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php 路由实现的

php 路由实现的

PHP 路由实现方法 基于原生 PHP 实现路由 创建一个简单的路由解析器,通过解析 URL 路径来调用对应的控制器或函数。 // 定义路由表 $routes = [ '/' => '…

php实现多态

php实现多态

多态的概念 多态是面向对象编程的三大特性之一,指同一个方法在不同类中有不同实现方式。PHP通过继承和接口实现多态。 通过继承实现多态 父类定义方法,子类重写该方法实现不同行为: class…

php 实现路由

php 实现路由

PHP 实现路由的方法 在 PHP 中实现路由功能可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 PHP 实现简单路由 通过解析 URL 并匹配对应的处理逻辑,可以实现基本的路由功能。以…