在 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