現在の位置: ホーム> 最新記事一覧> mysqli_resultを使用して、テーブルのエクスポートと印刷を実装します

mysqli_resultを使用して、テーブルのエクスポートと印刷を実装します

M66 2025-05-30

まず、MySQLデータベースとクエリに接続します。 ID名前電子メールなどのフィールドを含む、ユーザーと呼ばれるテーブルがデータベースに既にあるとします。

 <?php
// データベース接続設定
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// 接続を作成します
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続を確認してください
if ($conn->connect_error) {
    die("接続に失敗しました: " . $conn->connect_error);
}

// クエリデータ
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
?>

2。データをCSVファイルとしてエクスポートします

次に、PHPを使用して、クエリ結果をCSVファイルとしてエクスポートします。 mysqli_resultオブジェクトのデータは、線ごとに抽出され、CSVファイルに書き込まれます。

 <?php
// クエリの結果が存在する場合
if ($result->num_rows > 0) {
    // ファイル名を設定します
    $filename = "users_data_" . date("Ymd_His") . ".csv";

    // 応答ヘッダーを設定します,ブラウザにファイルをダウンロードするように伝えます
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '"');

    // 出力ストリームを開きます
    $output = fopen('php://output', 'w');

    // ヘッダーに書き込みます
    $header = ['ID', 'Name', 'Email'];
    fputcsv($output, $header);

    // データの行を書き込みます
    while ($row = $result->fetch_assoc()) {
        fputcsv($output, $row);
    }

    // 出力ストリームをオフにします
    fclose($output);
}
?>

3。Excelファイルとしてデータをエクスポートします

Excelファイルを直接生成することはもう少し複雑ですが、サードパーティのライブラリPHPEXCELまたはPHPSPREADSHEETを使用して実現できます。これらの2つのライブラリは、クエリ結果を.xlsまたは.xlsx形式のファイルにエクスポートするためのリッチな機能を提供します。

Excelのエクスポートの基本的な例を次に示します。まず、 phpspreadsheetをインストールする必要があります。

 composer require phpoffice/phpspreadsheet

次に、PHPで次のコードを使用してデータをエクスポートします。

 <?php
// 紹介された PhpSpreadsheet クラスライブラリ
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 新しいスプレッドシートオブジェクトを作成します
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// テーブルヘッダーの設定
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Name');
$sheet->setCellValue('C1', 'Email');

// データを入力します
$rowNum = 2;
while ($row = $result->fetch_assoc()) {
    $sheet->setCellValue('A' . $rowNum, $row['id']);
    $sheet->setCellValue('B' . $rowNum, $row['name']);
    $sheet->setCellValue('C' . $rowNum, $row['email']);
    $rowNum++;
}

// ファイル名を設定します
$filename = "users_data_" . date("Ymd_His") . ".xlsx";

// 応答ヘッダーを設定します,ブラウザにファイルをダウンロードするように伝えます
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

// 作成する Writer 物体
$writer = new Xlsx($spreadsheet);

// 出力ファイル
$writer->save('php://output');
?>

4。データテーブルを印刷します

印刷のためにデータテーブルをユーザーに提示したい場合は、クエリ結果をHTMLテーブルとして出力できます。ユーザーは、ブラウザの印刷機能を使用して直接印刷できます。

 <?php
// クエリの結果が存在する場合
if ($result->num_rows > 0) {
    echo '<table border="1">';
    echo '<thead>';
    echo '<tr><th>ID</th><th>Name</th><th>Email</th></tr>';
    echo '</thead>';
    echo '<tbody>';

    // 出力データライン
    while ($row = $result->fetch_assoc()) {
        echo '<tr>';
        echo '<td>' . $row['id'] . '</td>';
        echo '<td>' . $row['name'] . '</td>';
        echo '<td>' . $row['email'] . '</td>';
        echo '</tr>';
    }

    echo '</tbody>';
    echo '</table>';
    
    // 印刷ボタンを追加します
    echo '<br><button onclick="window.print()">フォームを印刷します</button>';
}
?>

このようにして、ユーザーは印刷ボタンをクリックして、テーブルフォームのページコンテンツを印刷できます。