为了简洁且高效地实现PHP中读取Excel文件内容并存入数据库的功能,我们可以使用`PhpSpreadsheet`库来读取Excel文件,并使用PDO(PHP Data Objects)扩展来与数据库交互。以下是一个基本的实现示例:
首先,确保你的项目中已经安装了`PhpSpreadsheet`库。如果未安装,你可以通过Composer来安装它:
composer require phpoffice/phpspreadsheet
接下来,是读取Excel文件并存入数据库的PHP代码示例:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
use PDO;
// 数据库连接配置
$dsn = 'mysql:host=localhost;dbname=your_database_name;charset=utf8';
$user = 'your_username';
$password = 'your_password';
try {
// 创建PDO实例
$pdo = new PDO($dsn, $user, $password);
// 加载Excel文件
$spreadsheet = IOFactory::load("path/to/your/excel/file.xlsx");
$sheet = $spreadsheet->getActiveSheet();
// 假设我们从第二行开始读取数据(第一行是标题)
for ($row = 2; $row <= $sheet->getHighestRow(); $row++) {
$cellIterator = $sheet->getRowIterator($row)->current()->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // 循环所有单元格
$data = [];
foreach ($cellIterator as $cell) {
$columnId = $cell->getColumn();
$value = $cell->getValue();
$data[$columnId] = $value;
}
// 假设我们有一个名为'your_table_name'的数据库表,并假设有两列:'column1'和'column2'
// 你可以根据需要调整表名和列名
$sql = "INSERT INTO your_table_name (column1, column2) VALUES (:column1, :column2)";
$stmt = $pdo->prepare($sql);
// 假设Excel文件的前两列是我们需要的数据
$stmt->bindParam(':column1', $data['A']);
$stmt->bindParam(':column2', $data['B']);
$stmt->execute();
}
echo "数据已成功导入数据库。";
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
} catch (\PhpOffice\PhpSpreadsheet\Exception $e) {
die("Excel文件读取失败: " . $e->getMessage());
}
?>
请注意,你需要根据自己的实际情况修改数据库连接信息(`$dsn`, `$user`, `$password`)、Excel文件路径(`"path/to/your/excel/file.xlsx"`)、数据库表名(`'your_table_name'`)、列名(`'column1'`, `'column2'`)以及Excel文件中数据对应的列(在这个例子中是`'A'`和`'B'`)。
这个脚本会读取指定Excel文件的所有数据(从第二行开始),并将它们插入到数据库中。请确保你的数据库表已经创建好,并且列名与你在脚本中指定的相匹配。