✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So exportieren Sie MySQL-Datenbankdaten mit PHP nach Excel

809

Vor kurzem veröffentlichte ich einen Artikel How to Read CSV and Excel File in PHP Using PhpSpreadsheet und einer der Leser fragte nach dem Exportieren von MySQL-Datenbankeinträgen in eine Excel-Datei. Der Benutzer benötigt möglicherweise seine Daten in der Excel- oder CSV-Datei, damit er sie einfach lesen oder teilen kann. In diesem Artikel haben wir besprochen, wie man Daten aus einer Datenbank in Excel- und CSV-Dateien exportieren kann. Darüber hinaus werden wir auch untersuchen, wie man diese exportierte Datei als Anhang in der E-Mail versenden kann.

Einstieg

Um loszulegen, müssen Sie zuerst die PhpSpreadsheet- Bibliothek installieren. Ich empfehle Composer für die Installation der Bibliothek zu verwenden. Öffnen Sie das Terminal in Ihrem Projekt-Root-Verzeichnis und führen Sie den Befehl aus:

composer require phpoffice/phpspreadsheet

PhpSpreadsheet ist die Bibliothek, die das Lesen und Schreiben verschiedener Dateiformate unterstützt. Unten ist der Screenshot der unterstützten Dateiformate.

So exportieren Sie MySQL-Datenbankdaten mit PHP nach Excel

Unser Endziel ist der Export von Datenbanktabellendatensätzen in eine Excel-/CSV-Datei. Ich nehme die Tabelle ‘Produkte’ als Beispiel. Lassen Sie uns eine Tabelle "Produkte" in der Datenbank erstellen, indem Sie die folgende Abfrage ausführen.

CREATE TABLE `products` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `product_name` varchar(255) NOT NULL,
 `product_sku` varchar(255) NOT NULL,
 `product_price` varchar(255) NOT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Fügen Sie als Nächstes einige Dummy-Einträge in die Tabelle ein, damit Sie einige Datensätze in der exportierten Datei sehen.

INSERT INTO `products` (`id`, `product_name`, `product_sku`, `product_price`) VALUES
(1, 'Apple', 'app_111', '$1000'),
(2, 'Lenovo', 'len_222', '$999'),
(3, 'Samsung', 'sam_689', '$1200'),
(4, 'Acer', 'ace_620', '$900');

Danach erstellen Sie eine db.phpDatei, in die wir die Datenbankverbindung schreiben würden.

db.php

<?php
$db_host = 'DATABASE_HOST';
$db_username = 'DATABASE_USERNAME';
$db_password = 'DATABASE_PASSWORD';
$db_name = 'DATABASE_NAME';
 
$db = new mysqli($db_host, $db_username, $db_password, $db_name);
 
if($db->connect_error){
    die("Unable to connect database: ". $db->connect_error);
}

Stellen Sie sicher, dass Sie die Platzhalter durch die tatsächlichen Werte im obigen Code ersetzen. Im nächsten Teil des Tutorials weise ich einen separaten Abschnitt zum Exportieren von Daten nach Excel, in CSV und zum Senden der E-Mail mit einer exportierten Datei als Anhang zu.

Exportieren von MySQL-Datenbankdaten nach Excel mit PHP

Sie haben die Bibliothek installiert und verfügen über eine Datenbanktabelle mit Dummy-Einträgen. Jetzt können Sie fortfahren und den eigentlichen Code schreiben, der eine Excel-Datei mit den darin ausgefüllten Daten exportiert.

Erstellen Sie eine index.phpDatei im Stammverzeichnis. In dieser Datei schreibe ich eine SELECT-Abfrage, um Daten aus der Datenbank abzurufen, diese Daten in Excel zu schreiben und schließlich automatisch herunterzuladen.

index.php

<?php
require_once "vendor/autoload.php";
require_once "db.php";
 
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;
 
$spreadsheet = new Spreadsheet();
$Excel_writer = new Xlsx($spreadsheet);
 
$spreadsheet->setActiveSheetIndex(0);
$activeSheet = $spreadsheet->getActiveSheet();
 
$activeSheet->setCellValue('A1', 'Product Name');
$activeSheet->setCellValue('B1', 'Product SKU');
$activeSheet->setCellValue('C1', 'Product Price');
 
$query = $db->query("SELECT * FROM products ORDER BY id DESC");
 
if($query->num_rows > 0) {
    $i = 2;
    while($row = $query->fetch_assoc()) {
        $activeSheet->setCellValue('A'.$i, $row['product_name']);
        $activeSheet->setCellValue('B'.$i, $row['product_sku']);
        $activeSheet->setCellValue('C'.$i, $row['product_price']);
        $i++;
    }
}
 
$filename = 'products.xlsx';
 
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename='. $filename);
header('Cache-Control: max-age=0');
$Excel_writer->save('php://output');

Wenn Sie diese PHP-Datei in einem Browser ausführen, wird automatisch eine Excel-Datei heruntergeladen und dieses Excel-Blatt hat die folgende Ausgabe.

So exportieren Sie MySQL-Datenbankdaten mit PHP nach Excel

Exportieren von MySQL-Datenbankdaten in CSV mit PHP

Im vorherigen Abschnitt haben wir Daten in eine Excel-Datei exportiert. Wenn jemand Daten in eine CSV-Datei exportieren möchte, müssen Sie einige Zeilen im obigen Code ändern.

csv.php

<?php
require_once "vendor/autoload.php";
require_once "db.php";
 
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterCsv;
 
$spreadsheet = new Spreadsheet();
$Excel_writer = new Csv($spreadsheet);
 
$spreadsheet->setActiveSheetIndex(0);
$activeSheet = $spreadsheet->getActiveSheet();
 
$activeSheet->setCellValue('A1', 'Product Name');
$activeSheet->setCellValue('B1', 'Product SKU');
$activeSheet->setCellValue('C1', 'Product Price');
 
$query = $db->query("SELECT * FROM products ORDER BY id DESC");
 
if($query->num_rows > 0) {
    $i = 2;
    while($row = $query->fetch_assoc()) {
        $activeSheet->setCellValue('A'.$i, $row['product_name']);
        $activeSheet->setCellValue('B'.$i, $row['product_sku']);
        $activeSheet->setCellValue('C'.$i, $row['product_price']);
        $i++;
    }
}
 
$filename = 'products.csv';
 
header('Content-Type: application/text-csv');
header('Content-Disposition: attachment;filename='. $filename);
header('Cache-Control: max-age=0');
$Excel_writer->save('php://output');

Senden Sie eine E-Mail mit einer Datei als Anhang

Bisher haben wir in diesem Artikel gesehen, wie Sie die Datei im CSV- und Excel-Format herunterladen. Einige Benutzer möchten die exportierte Datei möglicherweise als Anhang in der E-Mail senden. Mal sehen, wie man es erreicht.

Installieren Sie zuerst die PHPMailer- Bibliothek mit dem Befehl:

composer require phpmailer/phpmailer

Nach der Installation der Bibliothek können Sie einen beliebigen SMTP-Server zum Senden einer E-Mail verwenden. Es liegt an dir. Sie können Ihren vom Hosting bereitgestellten SMTP-Server, AWS SES oder Gmail-SMTP-Server verwenden. Wenn Sie mit dem Gmail-SMTP-Server arbeiten, lesen Sie unseren Artikel Senden von E-Mails mit dem Gmail-SMTP-Server von PHP-Skript, der die dafür erforderliche Konfiguration erklärt.

Der Code wird zuvor geschrieben lädt die Datei automatisch herunter. Aber jetzt, anstatt sie herunterzuladen, speichern wir die Datei im Verzeichnis und senden sie dann als Anhang. Kurz gesagt, wir haben unten den Code zum Speichern der Datei.

...
$filename = 'products.csv';
 
if (!file_exists('files')) {
    mkdir('files', 0755);
}
$Excel_writer->save('files/'.$filename);

Unser endgültiger Code zum Senden eines Anhangs in einer E-Mail sieht wie folgt aus:

<?php
require_once "vendor/autoload.php";
require_once "db.php";
 
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterCsv;
 
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
 
$spreadsheet = new Spreadsheet();
$Excel_writer = new Csv($spreadsheet);
 
$spreadsheet->setActiveSheetIndex(0);
$activeSheet = $spreadsheet->getActiveSheet();
 
$activeSheet->setCellValue('A1', 'Product Name');
$activeSheet->setCellValue('B1', 'Product SKU');
$activeSheet->setCellValue('C1', 'Product Price');
 
$query = $db->query("SELECT * FROM products ORDER BY id DESC");
 
if($query->num_rows > 0) {
    $i = 2;
    while($row = $query->fetch_assoc()) {
        $activeSheet->setCellValue('A'.$i, $row['product_name']);
        $activeSheet->setCellValue('B'.$i, $row['product_sku']);
        $activeSheet->setCellValue('C'.$i, $row['product_price']);
        $i++;
    }
}
 
$filename = 'products.csv';
 
if (!file_exists('files')) {
    mkdir('files', 0755);
}
$Excel_writer->save('files/'.$filename);
 
// send as an attachment
$mail = new PHPMailer(true);
try {
    $mail->isSMTP();
    $mail->Host = 'SMTP_HOST';
    $mail->SMTPAuth = true;
    $mail->Username = 'SMTP_USERNAME';   //username
    $mail->Password = 'SMTP_PASSWORD';   //password
    $mail->SMTPSecure = 'ssl';
    $mail->Port = 465;
 
    $mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
    $mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
  
    $mail->addAttachment('files/'.$filename);
  
    $mail->isHTML(true);
    $mail->Subject = 'Our Exported File';
    $mail->Body    = 'Our Exported File';
  
    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: '. $mail->ErrorInfo;
}

Ersetzen Sie die Platzhalter durch die tatsächlichen Werte und die E-Mail wird mit einem Anhang an die E-Mail-Adresse des Empfängers gesendet.

Ich hoffe, Sie verstehen, wie Sie MySQL-Datenbankeinträge in die Excel- oder CSV-Datei exportieren und auch als Anhang senden. Bitte teilen Sie Ihre Gedanken und Vorschläge im Kommentarbereich unten mit.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen