在 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