PHP วิธี Export Excel ไฟล์โดยการ Query จากฐานข้อมูล
PHP วิธี Export Excel ไฟล์โดยการ Query จากฐานข้อมูล
ส่วนหนึ่งของการทำเว็บไซต์คือการพัฒนาระบบหลังบ้าน และฟังก์ชั่นที่จำเป็นสำหรับระบบหลังบ้านอีกอย่างหนึ่งคือการสร้างไฟล์รายงานทั้ง .excel และ .csv หรืออาจจะมากกว่านี้ สำหรับบางธุรกิจไฟล์รายงานมีความจำเป็นและสำคัญมาก เพราะนอกจากงานออนไลน์แล้ว ในขั้นตอนต่อไปอาจจะต้องนำไฟล์ที่มี format ที่ธุรกิจใช้งานอยู่ ไปทำงานต่อในแบบออฟไลน์ วันนี้ลองมาดูกันครับว่าเราจะสามารถ export ข้อมูลเป็นไฟล์ excel โดยการนำข้อมูลจากฐานข้อมูลมาทำเป็นตารางได้อย่างไร
วิธี Export Excel โดยใช้ PHP
- 1. สร้างไฟล์ชื่อว่า report.php ส่วนแรกของไฟล์เขียนคำสั่งภาษา PHP เพื่อกำหนดชื่อไฟล์ที่เราจะ export และกำหนดให้ไฟล์นี้เป็นการดาวน์โหลดข้อมูล
- 2. จากข้อ 1 จะเป็นการสร้างไฟล์เท่านั้น แต่ยังไม่มีข้อมูล มีการสร้างข้อมูลให้ไฟล์ ให้เราเขียน html ต่อจากคำสั่ง php และใช้แท็ก table ในการจัดการกับข้อมูล ห้ามใช้ div เด็ดขาด ตัวอย่างเช่น ถ้าเราต้องการทำรายงานสมาชิกก็อาจจะเขียนตารางข้อมูลได้ในลักษณะนี้
- 3. และถ้าเราต้องการใช้ข้อมูลจากฐานข้อมูล ก็เพียงแค่ query ข้อมูลขึ้นมาแล้ว loop แสดงผลในตารางเหมือนในขั้นตอนที่ 2 ตัวอย่างการคำสั่งคิวรี่ข้อมูล
คำสั่งภาษา PHP ในส่วนนี้จะเป็นการสร้างและดาวน์โหลดไฟล์เมื่อเปิดไฟล์ report.php ผ่าน url เว็บไซต์
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php header("Content-Type: application/vnd.ms-excel"); // ประเภทของไฟล์ header('Content-Disposition: attachment; filename="myexcel.xls"'); //กำหนดชื่อไฟล์ header("Content-Type: application/force-download"); // กำหนดให้ถ้าเปิดหน้านี้ให้ดาวน์โหลดไฟล์ header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); // กำหนดให้ถ้าเปิดหน้านี้ให้ดาวน์โหลดไฟล์ header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize("myexcel.xls")); @readfile($filename); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <table> <tr> <td>ลำดับ</td> <td>ชื่อ</td> <td>อีเมล</td> <td>เบอร์โทร</td> </tr> <tr> <td>1</td> <td>วิทูลย์ โพมิผล</td> <td>codebee2014@gmail.com</td> <td>085 900 3405</td> </tr> <tr> <td>2</td> <td>เยาวภา โอภาษี</td> <td>codebee2015@gmail.com</td> <td>085 605 7748</td> </tr> </table> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <table> <tr> <td>ลำดับ</td> <td>ชื่อ</td> <td>อีเมล</td> <td>เบอร์โทร</td> </tr> <?php while($row=mysql_fetch_array($result)){ $id = $row['id']; $name = $row['name']; $email = $row['email']; $mobile = $row['mobile']; echo '<tr> <td>'.$id.'</td> <td>'.$name.'</td> <td>'.$email.'</td> <td>'.$mobile.'</td> </tr>'; ?> </table> </body> </html> |
นอกเหนือจากที่ก็เป็นการนำไปปรับใช้ให้เหมาะสมกับงาน เพราะสุดท้ายแล้วในการพัฒนาเพื่อใช้งานจริง ๆ อาจจะมีเรื่องความต้องการของลูกค้าเพิ่มเติมมา ตัวอย่างเช่น อาจจะต้องสามารถ export excel เป็นข้อมูลแบบรายวัน รายเดือนหรือรายปีได้ การนำออกข้อมูลแบบนี้ก็เพียงแค่ส่งตัวแปรแบบ timestamp เข้ามาเพื่อตรวจสอบวันที่ เดือนและปี เท่านั้นเองครับ