在 PHP 中将 MySQL 表导出到 Excel
我们将在本文中看到如何使用 PHP 将 MySQL 中的表导出到 excel 中。
在 PHP 中将 MySQL 表导出到 Excel
我们可以使用 PHP 中的 excel 标头将 MySQL 中的表导入到 excel 文件中。我们应该将 Content-type
标头指定为 application/xls
以包含 excel 标头。要下载 excel 文件,我们应该使用 Content-Disposition
标题作为附件
,并使用 filename
选项提供文件名。我们可以在 PHP 中查询所需的表并将结果保存在变量中。该变量应该是一个包含查询结果的 HTML 表格。然后,我们可以使用 header()
函数将表头信息发送到浏览器,并使用 echo
函数输出包含表格的变量。我们将分解将 MySQL 表导出到 Excel 文件的步骤。
例如,我们的数据库中有一个名为 users
的表。
+----+-----------+----------+------------+
| id | firstname | lastname | dob |
+----+-----------+----------+------------+
| 1 | james | gunn | 1998-08-13 |
| 2 | bille | joe | 1970-02-15 |
+----+-----------+----------+------------+
现在,我们将把表格导出到一个 excel 文件中。首先,让我们创建一个按钮来将表格导出到 excel 中。
<form method="post" action="index.php">
<input type="submit" name="submit" value="Export" />
</form>
我们创建了一个表单,在单击按钮时将数据提交到 index.php
文件。我们按钮的 name
属性是 submit
。稍后我们将使用该值来检查数据是否已在表单中提交。
首先,我们必须建立与数据库的连接。为此,请使用 mysqli_connect()
函数并提供你的服务器详细信息。将连接保存在 $connect
变量中。
$connect = mysqli_connect("hostname", "username", "password", "db_name");
请注意,作为上述函数的参数写入的值仅仅是占位符。你应该用你的服务器信息填写它。
接下来,我们可以使用 isset()
函数来检查表单是否已提交。由于 method
属性是我们创建的表单中的 post
,我们应该使用 $_POST
数组来检查。我们使用 name
属性的值 submit
作为 isset()
函数内 $_POST
数组的索引。
之后,编写 SQL 查询并将输出保存在 $res
变量中。从 users
表中选择所有行的查询如下。
SELECT * FROM users;
然后,使用 mysqli_query()
函数运行查询。数据库连接变量是函数中的第一个参数,MySQL 查询是第二个参数。我们可以使用 mysqli_num_rows()
函数检查查询结果。该函数返回数据库中的行数。行数必须大于零才能执行进一步的操作。写出 if
条件来评估条件。
在 if
条件中,创建一个变量 $export
并将 HTML 表保存在其中。创建带有 th
标签的表头。创建与表中的列名同名的标题。之后,使用 mysqli_fetch_array()
函数从数据库中获取数据。将函数分配给 $row
变量。
接下来,使用 $row
变量以列名作为索引来提取数据。将变量包装在 td
标记内,以便将数据填充到表中。一个例子如下所示。
<td>'.$row["id"].'</td>
接下来,关闭所有表格标签。 $export
变量包含作为字符串的表。接下来,编写 header()
函数以将发送到浏览器的内容表示为 excel 文件。再次,使用该功能下载 excel 文件。示例如下所示。
header('Content-Type: application/xls');
header('Content-Disposition: attachment; filename=info.xls');
最后,使用 echo
函数打印 $export
变量。请注意,所有 PHP 部分都在 index.php
文件中完成。
最终的代码示例如下所示。
示例代码:
$connect = mysqli_connect("hostname", "username", "password", "db_name");
if(isset($_POST["submit"]))
{
$query = "SELECT * FROM users";
$res = mysqli_query($connect, $query);
if(mysqli_num_rows($res) > 0)
{
$export .= '
<table>
<tr>
<th> id </th>
<th>firstname</th>
<th>lastname</th>
<th>dob</th>
</tr>
';
while($row = mysqli_fetch_array($res))
{
$export .= '
<tr>
<td>'.$row["id"].'</td>
<td>'.$row["firstname"].'</td>
<td>'.$row["lastname"].'</td>
<td>'.$row["dob"].'</td>
</tr>
';
}
$export .= '</table>';
header('Content-Type: application/xls');
header('Content-Disposition: attachment; filename=info.xls');
echo $export;
}
}
当我们单击导出按钮时,我们将能够下载包含数据库内容的 excel 文件。这样,我们就可以将 MySQL 表导出为 PHP 中的 excel 文件。
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn