当前位置:首页 > PHP

php实现excel导入数据库

2026-04-03 05:58:54PHP

PHP 实现 Excel 导入数据库的方法

使用 PHPExcel 或 PhpSpreadsheet 库

PHPExcel 是一个流行的 PHP 库,用于处理 Excel 文件。虽然 PHPExcel 已停止维护,但其继任者 PhpSpreadsheet 提供了类似的功能。以下步骤展示了如何使用 PhpSpreadsheet 导入 Excel 数据到数据库。

安装 PhpSpreadsheet 库:

composer require phpoffice/phpspreadsheet

示例代码:

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

// 数据库连接
$dbHost = 'localhost';
$dbUser = 'username';
$dbPass = 'password';
$dbName = 'database_name';
$conn = new mysqli($dbHost, $dbUser, $dbPass, $dbName);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 读取 Excel 文件
$inputFileName = 'path/to/your/file.xlsx';
$spreadsheet = IOFactory::load($inputFileName);
$sheet = $spreadsheet->getActiveSheet();

// 遍历行
foreach ($sheet->getRowIterator() as $row) {
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false);

    $data = [];
    foreach ($cellIterator as $cell) {
        $data[] = $cell->getValue();
    }

    // 插入数据库
    $sql = "INSERT INTO your_table (column1, column2, column3) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sss", $data[0], $data[1], $data[2]);
    $stmt->execute();
}

$conn->close();
echo "Data imported successfully";
?>

使用 PHP 原生函数处理 CSV 文件

如果 Excel 文件可以保存为 CSV 格式,可以使用 PHP 原生函数处理。

示例代码:

<?php
// 数据库连接
$conn = new mysqli('localhost', 'username', 'password', 'database_name');

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 打开 CSV 文件
if (($handle = fopen("path/to/your/file.csv", "r")) !== false) {
    while (($data = fgetcsv($handle, 1000, ",")) !== false) {
        $sql = "INSERT INTO your_table (column1, column2, column3) VALUES (?, ?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("sss", $data[0], $data[1], $data[2]);
        $stmt->execute();
    }
    fclose($handle);
}

$conn->close();
echo "Data imported successfully";
?>

使用第三方库 Box/Spout

Box/Spout 是一个轻量级的 PHP 库,专门用于读取和写入大型 Excel 文件。

安装 Box/Spout:

composer require box/spout

示例代码:

php实现excel导入数据库

<?php
require 'vendor/autoload.php';

use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;

// 数据库连接
$conn = new mysqli('localhost', 'username', 'password', 'database_name');

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$reader = ReaderEntityFactory::createXLSXReader();
$reader->open('path/to/your/file.xlsx');

foreach ($reader->getSheetIterator() as $sheet) {
    foreach ($sheet->getRowIterator() as $row) {
        $cells = $row->getCells();
        $data = array_map(function($cell) {
            return $cell->getValue();
        }, $cells);

        $sql = "INSERT INTO your_table (column1, column2, column3) VALUES (?, ?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("sss", $data[0], $data[1], $data[2]);
        $stmt->execute();
    }
}

$reader->close();
$conn->close();
echo "Data imported successfully";
?>

注意事项

  • 确保文件路径正确,且 PHP 有权限读取文件。
  • 处理大量数据时,考虑分批插入以避免内存问题。
  • 验证和清理数据以防止 SQL 注入。
  • 根据实际需求调整代码中的表名和列名。

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

相关文章

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session 是…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

php 路由实现的

php 路由实现的

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

php实现验证码的识别

php实现验证码的识别

验证码识别的基本方法 验证码识别通常分为手动实现和第三方工具两种方式。手动实现需要图像处理和机器学习知识,而第三方工具则更快捷。 使用Tesseract OCR识别验证码 Tesseract是一个开…