Position actuelle: Accueil> Derniers articles> Utilisez MySQLI_RESULT pour implémenter l'exportation et l'impression de tables

Utilisez MySQLI_RESULT pour implémenter l'exportation et l'impression de tables

M66 2025-05-30

Tout d'abord, connectez-vous à la base de données MySQL et à la requête. Supposons qu'il existe déjà un tableau dans la base de données appelée utilisateurs , y compris des champs tels que l'ID , le nom et l'e-mail .

 <?php
// Paramètres de connexion de la base de données
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);

// Vérifiez la connexion
if ($conn->connect_error) {
    die("Échec de la connexion: " . $conn->connect_error);
}

// Données de requête
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
?>

2. Exporter les données comme fichier CSV

Ensuite, nous utilisons PHP pour exporter les résultats de la requête en tant que fichier CSV. Les données de l'objet MySQLI_RESULT sont extraites ligne par ligne et écrites dans le fichier CSV.

 <?php
// Si le résultat de la requête existe
if ($result->num_rows > 0) {
    // Définir le nom du fichier
    $filename = "users_data_" . date("Ymd_His") . ".csv";

    // Définissez l&#39;en-tête de réponse,Dites au navigateur de télécharger le fichier
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '"');

    // Ouvrez le flux de sortie
    $output = fopen('php://output', 'w');

    // Écrivez à l&#39;en-tête
    $header = ['ID', 'Name', 'Email'];
    fputcsv($output, $header);

    // Écrire des lignes de données
    while ($row = $result->fetch_assoc()) {
        fputcsv($output, $row);
    }

    // Éteindre le flux de sortie
    fclose($output);
}
?>

3. Exporter les données comme un fichier Excel

Bien qu'il soit un peu plus compliqué de générer directement des fichiers Excel, il peut être réalisé via la bibliothèque tierce Phpexcel ou PHPSPreadSheet . Ces deux bibliothèques fournissent des fonctionnalités riches pour exporter les résultats de la requête dans des fichiers au format .xls ou .xlsx .

Voici un exemple de base de l'exportation Excel. Tout d'abord, vous devez installer PHPSPreadSheet :

 composer require phpoffice/phpspreadsheet

Utilisez ensuite le code suivant dans PHP pour exporter les données:

 <?php
// Présenté PhpSpreadsheet Bibliothèque de classe
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// Créer un nouvel objet de feuille de calcul
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// Réglage de l&#39;en-tête de table
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Name');
$sheet->setCellValue('C1', 'Email');

// Remplir les données
$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++;
}

// Définir le nom du fichier
$filename = "users_data_" . date("Ymd_His") . ".xlsx";

// Définissez l&#39;en-tête de réponse,Dites au navigateur de télécharger le fichier
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

// créer Writer Objet
$writer = new Xlsx($spreadsheet);

// Fichier de sortie
$writer->save('php://output');
?>

4. Tableau de données d'impression

Si vous souhaitez que la table de données soit présentée à l'utilisateur pour l'impression, vous pouvez publier les résultats de la requête sous forme de tables HTML. Les utilisateurs peuvent imprimer directement à l'aide de la fonction d'impression du navigateur.

 <?php
// Si le résultat de la requête existe
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>';

    // Ligne de données de sortie
    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>';
    
    // Ajouter le bouton d&#39;impression
    echo '<br><button onclick="window.print()">Imprimer le formulaire</button>';
}
?>

De cette façon, l'utilisateur peut cliquer sur le bouton d'impression pour imprimer le contenu de la page dans un formulaire de table.