首先,连接到 MySQL 数据库并进行查询。假设数据库中已有一个名为 users 的表格,包含 id、name 和 email 等字段。
<?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);
?>
接下来,我们使用 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);
}
?>
虽然直接生成 Excel 文件稍微复杂,但可以通过第三方库 PHPExcel 或 PhpSpreadsheet 来实现。这两个库提供了丰富的功能,能够将查询结果导出为 .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');
?>
如果您希望将数据表格呈现给用户以供打印,可以将查询结果以 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>';
}
?>
这样,用户可以点击打印按钮,将页面内容以表格形式打印出来。