利用phpexcel把excel导入数据库和数据库导出excel实现


由于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知识。在实际应用中,你可能需要添加更多的错误处理、数据验证和清理逻辑。