当前位置:首页 > 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

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>

处理上传的文件

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实现excel导入数据库

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

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUT…