php-export-excel

PHP วิธี Export Excel ไฟล์โดยการ Query จากฐานข้อมูล

PHP วิธี Export Excel ไฟล์โดยการ Query จากฐานข้อมูล



PHP วิธี Export Excel ไฟล์โดยการ Query จากฐานข้อมูล
ส่วนหนึ่งของการทำเว็บไซต์คือการพัฒนาระบบหลังบ้าน และฟังก์ชั่นที่จำเป็นสำหรับระบบหลังบ้านอีกอย่างหนึ่งคือการสร้างไฟล์รายงานทั้ง .excel และ .csv หรืออาจจะมากกว่านี้ สำหรับบางธุรกิจไฟล์รายงานมีความจำเป็นและสำคัญมาก เพราะนอกจากงานออนไลน์แล้ว ในขั้นตอนต่อไปอาจจะต้องนำไฟล์ที่มี format ที่ธุรกิจใช้งานอยู่ ไปทำงานต่อในแบบออฟไลน์ วันนี้ลองมาดูกันครับว่าเราจะสามารถ export ข้อมูลเป็นไฟล์ excel โดยการนำข้อมูลจากฐานข้อมูลมาทำเป็นตารางได้อย่างไร


วิธี Export Excel โดยใช้ PHP

  • 1. สร้างไฟล์ชื่อว่า report.php ส่วนแรกของไฟล์เขียนคำสั่งภาษา PHP เพื่อกำหนดชื่อไฟล์ที่เราจะ export และกำหนดให้ไฟล์นี้เป็นการดาวน์โหลดข้อมูล
  • คำสั่งภาษา PHP ในส่วนนี้จะเป็นการสร้างและดาวน์โหลดไฟล์เมื่อเปิดไฟล์ report.php ผ่าน url เว็บไซต์

    <?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); 
    
    ?>
  • 2. จากข้อ 1 จะเป็นการสร้างไฟล์เท่านั้น แต่ยังไม่มีข้อมูล มีการสร้างข้อมูลให้ไฟล์ ให้เราเขียน html ต่อจากคำสั่ง php และใช้แท็ก table ในการจัดการกับข้อมูล ห้ามใช้ div เด็ดขาด ตัวอย่างเช่น ถ้าเราต้องการทำรายงานสมาชิกก็อาจจะเขียนตารางข้อมูลได้ในลักษณะนี้
  • 
    
    
    
    
    
    
    
    ลำดับ ชื่อ อีเมล เบอร์โทร
    1 วิทูลย์ โพมิผล codebee2014@gmail.com 085 900 3405
    2 เยาวภา โอภาษี codebee2015@gmail.com 085 605 7748
  • 3. และถ้าเราต้องการใช้ข้อมูลจากฐานข้อมูล ก็เพียงแค่ query ข้อมูลขึ้นมาแล้ว loop แสดงผลในตารางเหมือนในขั้นตอนที่ 2 ตัวอย่างการคำสั่งคิวรี่ข้อมูล
  • <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 เข้ามาเพื่อตรวจสอบวันที่ เดือนและปี เท่านั้นเองครับ

ดาวน์โหลดไฟล์ตัวอย่าง