在 PHP 中将 MySQL 表导出到 Excel

Subodh Poudel 2022年5月13日
在 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 Poudel avatar Subodh Poudel avatar

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

相关文章 - PHP MySQL