由于PHPExcel库已经过时,并且不再维护,我建议使用PhpSpreadsheet库,它是PHPExcel的继承者,提供了更现代和强大的功能来处理Excel文件。
以下是一个简化的示例,展示如何使用PhpSpreadsheet库将Excel文件导入数据库,以及如何将数据库数据导出到Excel文件。
### 导入Excel到数据库
首先,你需要安装PhpSpreadsheet库。你可以通过Composer来安装:
composer require phpoffice/phpspreadsheet
然后,你可以编写一个脚本来读取Excel文件并将其内容插入到数据库中。这里假设你有一个名为`users`的数据库表,包含`id`, `name`, `email`字段。
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
// 加载Excel文件
$spreadsheet = IOFactory::load('path/to/your/file.xlsx');
$sheet = $spreadsheet->getActiveSheet();
// 连接到数据库(这里使用PDO作为示例)
$dsn = 'mysql:host=localhost;dbname=your_database';
$user = 'your_username';
$password = 'your_password';
try {
$pdo = new PDO($dsn, $user, $password);
// 假设第一行是标题行,从第二行开始读取数据
for ($row = 2; $row <= $sheet->getHighestRow(); $row++) {
$cellIterator = $sheet->getRowIterator($row)->current()->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // 循环所有单元格,包括空单元格
$name = $sheet->getCell('A' . $row)->getValue();
$email = $sheet->getCell('B' . $row)->getValue();
// 插入数据库(这里仅作为示例,实际使用时请确保对输入进行验证和清理)
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$name, $email]);
}
} catch (PDOException $e) {
die("Could not connect to the database $dsn :" . $e->getMessage());
}
echo "Data imported successfully!";
### 导出数据库到Excel
同样,你可以使用PhpSpreadsheet库来创建Excel文件,并将数据库中的数据写入该文件。
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 连接到数据库(同上)
// 创建一个新的Spreadsheet对象
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// 假设我们要导出users表的所有数据
$stmt = $pdo->query("SELECT id, name, email FROM users");
$row = 1;
while ($row_data = $stmt->fetch(PDO::FETCH_ASSOC)) {
$column = 1;
foreach ($row_data as $value) {
$sheet->setCellValueByColumnAndRow($column, $row, $value);
$column++;
}
$row++;
}
// 写入文件
$writer = new Xlsx($spreadsheet);
$writer->save('path/to/your/output.xlsx');
echo "Data exported successfully!";
请注意,这些示例代码仅用于说明目的,并假设你已经有了基本的PHP和PDO知识。在实际应用中,你可能需要添加更多的错误处理、数据验证和清理逻辑。