PHP で MySQL テーブルを Excel にエクスポート

Subodh Poudel 2022年4月12日
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 Poudel
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