Ekspor mysql ke excel php

Baru-baru ini saya menerbitkan artikel Cara Membaca File CSV dan Excel di PHP Menggunakan PhpSpreadsheet. Salah satu pembaca bertanya bagaimana cara menggunakan PhpSpreadsheet untuk mengekspor record database MySQL ke file Excel. Pengguna mungkin memerlukan data MySQL mereka dalam file Excel atau CSV untuk membaca atau membagikannya dengan mudah. Pada artikel ini, kita membahas bagaimana seseorang dapat mengekspor data dari database ke file Excel dan CSV. Selain itu, kami juga akan mempelajari bagaimana seseorang dapat mengirim file yang diekspor ini sebagai lampiran di email

Mulai

Untuk memulai, Anda harus menginstal pustaka PhpSpreadsheet terlebih dahulu. Saya merekomendasikan menggunakan Komposer untuk instalasi perpustakaan. Buka terminal di direktori root proyek Anda dan jalankan perintah

composer require phpoffice/phpspreadsheet

PhpSpreadsheet adalah pustaka yang menyediakan dukungan untuk membaca dan menulis berbagai jenis format file. Di bawah ini adalah tangkapan layar dari format file yang didukung

Ekspor mysql ke excel php

Tujuan akhir kami adalah mengekspor catatan tabel database ke file Excel/CSV. Untuk ini, kami memerlukan beberapa entri dalam basis data kami. Sebagai contoh, saya membuat tabel 'produk' dengan menjalankan kueri SQL di bawah ini

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;
_

Selanjutnya, tambahkan beberapa entri tiruan dalam tabel sehingga Anda akan melihat beberapa rekaman dalam file yang diekspor

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

Setelah ini buat file config.php_ di mana kita menulis kode untuk koneksi database

config. 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);
}

Pastikan untuk mengganti placeholder dengan nilai aktual pada kode di atas. File ini akan disertakan nanti untuk mengambil catatan dari tabel 'produk'

Di bagian tutorial selanjutnya, saya mengalokasikan bagian terpisah untuk mengekspor data ke Excel, mengekspor data ke CSV, dan mengirim email dengan file yang diekspor sebagai lampiran

Ekspor Data Database MySQL ke Excel Menggunakan PHP

Anda telah menginstal perpustakaan dan juga memiliki tabel database dengan beberapa entri. Sekarang Anda dapat melanjutkan dan menulis kode aktual yang akan mengekspor file Excel dengan data yang diisi di dalamnya

Create a export-to-excel.php file in the root directory. In this file, I will write a SQL query to fetch data from the database, write this data to Excel, and finally send the Excel file to the browser to download automatically.

ekspor ke excel. php

<?php
require_once "vendor/autoload.php";
require_once "config.php";
 
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
$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");
 
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');
_

Saat Anda menjalankan kode ini di browser, file Excel akan diunduh secara otomatis dan lembar Excel akan memiliki entri berikut

Ekspor mysql ke excel php

Ekspor Data Database MySQL ke CSV Menggunakan PHP

Di bagian sebelumnya, kami mengekspor data ke file Excel. Jika seseorang ingin mengekspor data dalam file CSV maka Anda perlu mengubah beberapa baris kode di atas

ekspor-ke-csv. php

<?php
require_once "vendor/autoload.php";
require_once "config.php";
 
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
 
$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");
 
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');

Kirim Email dengan File sebagai Lampiran

Kami telah melihat cara mengunduh file dengan data dalam format Excel/CSV. Beberapa pengguna mungkin ingin mengirim file yang diekspor sebagai lampiran di email. Mari kita lihat bagaimana cara mencapainya

Pertama, instal pustaka PHPMailer menggunakan perintah

composer require phpmailer/phpmailer
_

Setelah menginstal perpustakaan, Anda dapat menggunakan server SMTP apa pun untuk mengirim email. Terserah kamu. Anda dapat menggunakan server SMTP hosting, AWS SES, atau server SMTP Gmail. Jika Anda menggunakan server SMTP Gmail, baca artikel kami Kirim Email Menggunakan Server SMTP Gmail dari Skrip PHP yang menjelaskan konfigurasi yang diperlukan untuk itu

Kode sebelumnya mengunduh file Excel/CSV secara otomatis. Namun sekarang, alih-alih membuatnya dapat diunduh, kami akan menyimpan file tersebut di direktori dan kemudian mengirimkannya sebagai lampiran. Singkatnya, kami akan menulis kode di bawah ini untuk menyimpan file

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

Kode terakhir kami untuk mengirim lampiran dalam email adalah sebagai berikut

<?php
require_once "vendor/autoload.php";
require_once "config.php";
 
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
 
//Import PHPMailer classes into the global namespace
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
 
$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");
 
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 = 'Products Sheet';
    $mail->Body    = 'Products Sheet';
 
    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: '. $mail->ErrorInfo;
}
_

Ganti placeholder dengan nilai aktual dan email akan dikirim dengan lampiran ke alamat email penerima

Saya harap Anda mengerti cara mengekspor data database MySQL ke file Excel atau CSV dan juga mengirimkannya sebagai lampiran. Silakan bagikan pemikiran dan saran Anda di bagian komentar di bawah ini

Bagaimana cara mengekspor data dari MySQL ke excel di php?

php // Koneksi $conn=mysql_connect('localhost','root',''); . xls"; // Nama File // Unduh file header("Content-Disposition. lampiran; . aplikasi/vnd

Bagaimana cara mengekspor MySQL ke Excel?

Cara mengekspor data dari MySQL ke Excel .
Pilih MySQL sebagai sumber data dan Excel sebagai tujuan data. .
Buat koneksi ke server MySQL Anda
Masukkan database dan tabel/tampilan yang ingin Anda ekspor. .
Sambungkan ke akun Microsoft Anda dan tentukan buku kerja Excel untuk data tersebut

Bagaimana cara membuat ekspor ke excel di php?

Ekspor Data dari Basis Data. .
Fungsi filterData() digunakan untuk memfilter string sebelum ditambahkan ke baris data excel
$fileName – Tentukan nama file excel yang akan diunduh
$fields – Tentukan nama kolom dari lembar excel
$excelData – Tambahkan baris pertama ke lembar excel sebagai nama kolom

Bagaimana cara mendownload data dari database menggunakan php?

php $nama= $_GET['nama']; . Transfer Berkas'); . aplikasi/aliran oktet'); . lampiran;