Export เป็น Excel อย่างด่วน
10,393 viewsในงานหลายๆ งานที่ต้องมีการ export ข้อมูลออกมา เมื่อก่อนงูๆ ปลาๆ แค่ทำเป็น csv ต่อมาเริ่มหาเครื่องมือช่วยแล้วก็ได้ php_writeexcel ดูตัวอย่างการทำงาน ได้ที่นี่ เป็น class ที่ช่วยสร้าง excel จริงๆ ขึ้นมาได้ ซึ่งใช้ได้ดีมากๆ แต่ในบางครั้งแค่ต้องการ export ข้อมูลอย่างเดียวเราสามารถใช้วิธีสร้างไฟล์ excel ง่ายๆ จาก code html ได้เลย
ดูตัวอย่าง ได้ที่นี่ มาดู code กัน
<? $strExcelFileName = "Excel ไฟล์ง่ายนิดเดียว.xls"; header("Content-Type: application/x-msexcel; name=\"$strExcelFileName\""); header("Content-Disposition: inline; filename=\"$strExcelFileName\""); header("Pragma: no-cache"); ?>
ส่วนนี้เป็น header ของ server (website) เพื่อบอก client (browser IE,FireFox, etc..) ว่าเอกสารที่กำลังเรียกมานี้เป็น excel เรื่อง header นี้ถ้ารักจะเป็น web developer จำเป็นต้องรู้นะครับ ทำอะไรได้มากมายเลย เช่น debug program ที่เกี่ยวกับ www, debug flash + php ฯลฯ จะทำให้ทำงานได้เร็วขึ้นเยอะ หรือรวมไปถึงเรื่อง hack เลยทีเดียว ไว้เรื่อง header จะขอแยกเป็นอีกเรื่องหนึ่งในภายหลังครับ
<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"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html;charset=tis-620" /> <style id="SiXhEaD_Excel_Styles"></style> </head> <body> <strong>ตัวอย่างรายงาน</strong><br> <br> <div id="SiXhEaD_Excel" align=center x:publishsource="Excel"> <table x:str border=0 cellpadding=0 cellspacing=0 width=100% style="border-collapse: collapse"> <tr> <td width="50" class=xl2216681 nowrap><strong>Id</strong></td> <td width="80" class=xl2216681 nowrap><strong>จังหวัด</strong></td> <td width="80" class=xl2216681 nowrap><strong>โทรศัพท์</strong></td> </tr> <tr> <td class=xl2216681 nowrap>00001</td> <td class=xl2216681 nowrap>กรุงเทพฯ</td> <td class=xl2216681 nowrap>0810000000</td> </tr> <tr> <td class=xl2216681 nowrap>00002</td> <td class=xl2216681 nowrap>กาญจนบุรี</td> <td class=xl2216681 nowrap>0819999999</td> </tr> </table> </div> </body> </html>
ส่วนนี้เป็น tag html ล้วนๆ มีสิ่งที่พิเศษอยู่หน่อยตรง 3 บรรทัดแรกที่ระบุว่า รูปแบบของไฟล์นี้เป็น excel
class=xl2216681
ใส่เลข random อะไรก็ได้แต่ให้เหมือนกันทั้งหน้า
จะเอาไปใช้งานก็ดูตัวอย่างดีๆ นะครับ tag บางอันถ้าไม่มีก็ยังออกมาเป็น excel ได้ แต่ว่าบาง column ที่มี 0 นำหน้าเลข 0 จะหายไปครับ
ทิ้งท้าย
- source code
- ตัว phpmyadmin ที่เราๆ ท่านๆ ใช้กันอยู่ก็ใช้วิธี export ออกเป็น excel ด้วยวิธีนี้เช่นกัน
- ผมแนะนำนะครับว่า พวกไฟล์ทั้งหลายอย่าไปคิดว่ามันเปิดด้วย excel หรือ word ได้เท่านั้น ลองเอา editplus หรือ notepad เปิดไฟล์ .xls ที่ได้จากวิธีการนี้ดูแล้วคุณจะประหลาดใจกับมันครับ เรื่องเปิดไฟล์ใดๆ ด้วย editplus ยังทำให้คุณแปลกใจอะไรได้อีกมากมาย ลองดูแล้วกันครับ
13 Comments »
RSS feed for comments on this post. TrackBack URL
[...] อ่านเพิ่มเติมได้ที่นี่ครับ (อธิบายดีจริงๆ) : http://sixhead.com/2008/03/06/easy-export-to-excel/ [...]
[...] คราวนี้ถือเป็นภาคต่อจากบทความ Export เป็น Excel อย่างด่วน ส่วนบทความนี้ ดูตัวอย่าง ได้ที่นี่ [...]
ผมลองหาวิธีแก้ column ที่นำหน้าด้วยเลข 0 มันหายไปครับ
โดยการใส่เครื่องหมาย ['] ไปหน้าตัวเลขครับ
เช่น
’00001
ในช่อง cell จะไม่แสดงเครื่องหมายออก[']มาครับ
(แต่จะยังมีอยู่ในช่อง formula ครับ) :)
ง่ะ ผมลองเปิดใน excel 2003 กะ 2007
มันโชว์ ['] ในช่อง cell ด้วยครับ แหะ แหะ
แต่ถ้าเป็น open office จะไม่โชว์ ['] ในช่อง cell
ถ้าเราจะเติมสีให้กับ row หรือ colum ได้รึป่าวค่
ต้องยังงัยค่ะ ช่วยแนะนำหน่อยค่ะ
ขอบคุณมากค่ะ ทำได้แล้ว ดีมากเลยด้วย
ถ้าผมจะเพิ่มหน้า sheet ด้วย จะทำได้ยังไง ครับ
สงสัยต้องไปใช้วิธี เขียนออกมาเป็น .xml ครับแต่ว่าเป็น format excel นะลอง search หาดูประมาณนี้
Thanks so much. It’s really great !
โค้ดนี้สามารถเอาไปใช้เวลาลง server จริงได้เลยใช่ไหมคะ
จะมีปัญหาอะไรหรือเปล่า
ขอบคุณคะ
ใช้ได้แน่นอนครับ ไม่มีปัญหาอะไรอยู่แล้ว
ใช้ได้ทุก Platform เลยเปล่าคะ
แล้ว วิธี header แบบนี้มันต่างกันกับ PHPExcel ยังไงคะ http://phpexcel.codeplex.com/ คือลองศึกษาแล้วมันยากมากๆๆ แค่เริ่มลอง test ไฟล์ที่เค้าให้มาก็เทสไม่ได้แล้ว :((
ขอบคุณคะ
ถ้า server รัน PHP ได้ก็ใช้ได้ครับ ที่จริงแล้วมันคือ html สร้างให้อยู่ในรูปแบบ excel ที่เป็น html
ส่วนจาก codeplex นั้นเป็น excel แท้ลองเอา editplus หรือ text editor เปิดไฟล์ที่ได้ดูครับ