当前位置: 首页> 最新文章列表> 用 mysqli_result 实现表格的导出与打印

用 mysqli_result 实现表格的导出与打印

M66 2025-05-30

首先,连接到 MySQL 数据库并进行查询。假设数据库中已有一个名为 users 的表格,包含 idnameemail 等字段。

<?php
// 数据库连接设置
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 查询数据
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
?>

2. 导出数据为 CSV 文件

接下来,我们使用 PHP 将查询结果导出为 CSV 文件。mysqli_result 对象中的数据将逐行提取并写入到 CSV 文件。

<?php
// 如果查询结果存在
if ($result->num_rows > 0) {
    // 设置文件名
    $filename = "users_data_" . date("Ymd_His") . ".csv";

    // 设置响应头,告诉浏览器下载文件
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '"');

    // 打开输出流
    $output = fopen('php://output', 'w');

    // 写入表头
    $header = ['ID', 'Name', 'Email'];
    fputcsv($output, $header);

    // 写入数据行
    while ($row = $result->fetch_assoc()) {
        fputcsv($output, $row);
    }

    // 关闭输出流
    fclose($output);
}
?>

3. 导出数据为 Excel 文件

虽然直接生成 Excel 文件稍微复杂,但可以通过第三方库 PHPExcelPhpSpreadsheet 来实现。这两个库提供了丰富的功能,能够将查询结果导出为 .xls.xlsx 格式的文件。

下面是一个基本的导出 Excel 的例子,首先需要安装 PhpSpreadsheet

composer require phpoffice/phpspreadsheet

然后在 PHP 中使用如下代码导出数据:

<?php
// 引入 PhpSpreadsheet 类库
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 创建新的电子表格对象
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// 设置表头
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Name');
$sheet->setCellValue('C1', 'Email');

// 填充数据
$rowNum = 2;
while ($row = $result->fetch_assoc()) {
    $sheet->setCellValue('A' . $rowNum, $row['id']);
    $sheet->setCellValue('B' . $rowNum, $row['name']);
    $sheet->setCellValue('C' . $rowNum, $row['email']);
    $rowNum++;
}

// 设置文件名
$filename = "users_data_" . date("Ymd_His") . ".xlsx";

// 设置响应头,告诉浏览器下载文件
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

// 创建 Writer 对象
$writer = new Xlsx($spreadsheet);

// 输出文件
$writer->save('php://output');
?>

4. 打印数据表格

如果您希望将数据表格呈现给用户以供打印,可以将查询结果以 HTML 表格的形式输出。用户可以直接使用浏览器的打印功能进行打印。

<?php
// 如果查询结果存在
if ($result->num_rows > 0) {
    echo '<table border="1">';
    echo '<thead>';
    echo '<tr><th>ID</th><th>Name</th><th>Email</th></tr>';
    echo '</thead>';
    echo '<tbody>';

    // 输出数据行
    while ($row = $result->fetch_assoc()) {
        echo '<tr>';
        echo '<td>' . $row['id'] . '</td>';
        echo '<td>' . $row['name'] . '</td>';
        echo '<td>' . $row['email'] . '</td>';
        echo '</tr>';
    }

    echo '</tbody>';
    echo '</table>';
    
    // 添加打印按钮
    echo '<br><button onclick="window.print()">打印表格</button>';
}
?>

这样,用户可以点击打印按钮,将页面内容以表格形式打印出来。