PHP で MySQL テーブルを Excel にエクスポート
この記事では、PHP を使用して MySQL のテーブルを Excel にエクスポートする方法を説明します。
PHP で MySQL テーブルを Excel にエクスポート
PHP の Excel ヘッダーを使用して、MySQL のテーブルを Excel ファイルにインポートできます。Excel ヘッダーを含めるには、Content-type
ヘッダーを application/xls
として指定する必要があります。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
配列を使用して確認する必要があります。isset()
関数内の $_POST
配列のインデックスとして、name
属性の値 submit
を使用します。
その後、SQL クエリを記述し、出力を $res
変数に保存します。users
テーブルからすべての行を選択するためのクエリは以下のとおりです。
SELECT * FROM users;
次に、mysqli_query()
関数を使用してクエリを実行します。データベース接続変数は関数の最初のパラメーターであり、MySQL クエリは 2 番目のパラメーターです。mysqli_num_rows()
関数を使用してクエリ結果を確認できます。この関数は、データベースから行数を返します。さらに操作を実行するには、行数がゼロより大きくなければなりません。if
条件を記述して、条件を評価します。
if
条件内で、変数 $export
を作成し、その中に HTML テーブルを保存します。th
タグを使用してテーブルヘッダーを作成します。テーブルの列名と同じ名前のヘッダーを作成します。その後、mysqli_fetch_array()
関数を使用してデータベースからデータをフェッチします。関数を $row
変数に割り当てます。
次に、$row
変数を使用して、列名をインデックスとして使用してデータを抽出します。変数を td
タグ内にラップして、データがテーブルに入力されるようにします。以下に例を示します。
<td>'.$row["id"].'</td>
次に、すべてのテーブルタグを閉じます。$export
変数には、テーブルが文字列として含まれています。次に、ブラウザに送信されるコンテンツを Excel ファイルとして示す header()
関数を記述します。この場合も、関数を使用して 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