当前位置:首页 > 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 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…

php数组实现

php数组实现

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

php 实现跳转

php 实现跳转

PHP 实现页面跳转的方法 在PHP中,实现页面跳转可以通过多种方式完成,以下是几种常用的方法: 使用header函数 header函数是PHP中最常用的跳转方法,通过发送HTTP头部信息实现跳转。…