ตัวอย่าง Export รายงานเป็น Excel บนหน้าเว็บ ด้วย PHP MySql และ Javascript

สำหรับกำารสร้าง Web Application ที่เกี่ยวข้องกับ ฐานข้อมูล การ export ข้อมูลจาก database ออกมาเป็นไฟล์ excel นั้นจะช่วยให้ผู้ใช้นำข้อมูลที่ได้ไปวิเคราะห์ต่อได้สะดวกขึ้น ในตัวอย่างนี้จะเป็นการนำข้อมูลจาก MySql ออกมาแสดงในหน้าเว็บ ด้วย PHP และให้ผู้ใช้สามารถ Download เป็น ไฟล์ excel ได้ดังนี้

Link ที่เกี่ยวข้อง การอ่านข้อมูลจากไฟล์ excel โดยใช้ PHP

รับเขียนโปรแกรม PHP ออกรายงานเป็น excel

<?php
    /*กำหนด username password และ database name ของ mysql */
    $servername = "localhost";
    $username = "....";
    $password = "....";
    $dbname = "....";

    /*------เชื่อมต่อ Database----*/
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    if ($conn->connect_error) {
      die("Connection Error: " . $conn->connect_error);
    }

    /*------ถ้ายังไม่มีตาราง ให้สร้างตาราง ชื่อ food----*/
    $sql = "CREATE TABLE IF NOT EXISTS food  (
        food_name VARCHAR(100),
        price INT(5)

    )";

    $conn->query($sql);

    $sql = "SELECT * FROM food";
    $result = $conn->query($sql);

    if ($result->num_rows == 0)
    {
          /*----ถ้ายังไม่มีข้อมูลในตาราง food ให้เพิ่มข้อมูลเข้าไป----*/

        $sql = "INSERT INTO food (food_name, price)
        VALUES ('Hamburger', '199')";
        $conn->query($sql);

        $sql = "INSERT INTO food (food_name, price)
        VALUES ('Pizza', '399')";
        $conn->query($sql);

        $sql = "INSERT INTO food (food_name, price)
        VALUES ('Doughnut', '59')";
        $conn->query($sql);

    }

 /*สร้างปุ่มสำหรับ Download ไฟล์ excel โดยกำหนดว่าเมื่อกดปุ่ม Downlaod แล้วจะทำงานที่ javascript function ชื่อว่า ExcelReport()*/
     echo "<a href='#' id='download_link' onClick='javascript:ExcelReport();''>Download</a>";

    echo "<table id='myTable'>";
         echo "<tr>";
                echo "<td>Food Name</td>";
                echo "<td>Price</td>";
        echo "</tr>";
    /*นำข้อมูลจากตาราง food มาแสดง*/
    $sql = "SELECT * FROM food";
    $result = $conn->query($sql);
    while($row = $result->fetch_assoc())
    {
        echo "<tr>";
            echo "<td>$row[food_name]</td>";
            echo "<td>$row[price]</td>";
        echo "</tr>";
    }
    echo "</table>";

    $conn->close();

?>
<!-- เรียกใช้ javascript สำหรับ export ไฟล์ excel  -->
<script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"  ></script>
<script src="https://unpkg.com/file-saver@1.3.3/FileSaver.js"  ></script>

<script>
function ExcelReport()//function สำหรับสร้าง ไฟล์ excel จากตาราง
{
    var sheet_name="excel_sheet";/* กำหหนดชื่อ sheet ให้กับ excel โดยต้องไม่เกิน 31 ตัวอักษร */
    var elt = document.getElementById('myTable');/*กำหนดสร้างไฟล์ excel จาก table element ที่มี id ชื่อว่า myTable*/

    /*------สร้างไฟล์ excel------*/
    var wb = XLSX.utils.table_to_book(elt, {sheet: sheet_name});
    XLSX.writeFile(wb,'report.xlsx');//Download ไฟล์ excel จากตาราง html โดยใช้ชื่อว่า report.xlsx
}
</script>
<style type="text/css">

table {
  border-collapse: collapse;
  width:40%;
}

table, th, td {
  border: 1px solid black;
}

</style>


ผลลัพธ์ข้องหน้าเว็บคือ


ข้อมูลใน File Excel จะแสดงดังรูป