Mar
06
2008

Export เป็น Excel อย่างด่วน

5,117 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 ยังทำให้คุณแปลกใจอะไรได้อีกมากมาย ลองดูแล้วกันครับ


Written by Pipo in: PHP | Tags: , , ,

8 Comments »

  • [...] อ่านเพิ่มเติมได้ที่นี่ครับ (อธิบายดีจริงๆ) : http://sixhead.com/2008/03/06/easy-export-to-excel/ [...]

  • [...] คราวนี้ถือเป็นภาคต่อจากบทความ Export เป็น Excel อย่างด่วน ส่วนบทความนี้ ดูตัวอย่าง ได้ที่นี่ [...]

  • ผมลองหาวิธีแก้ column ที่นำหน้าด้วยเลข 0 มันหายไปครับ
    โดยการใส่เครื่องหมาย ['] ไปหน้าตัวเลขครับ
    เช่น

    ‘00001

    ในช่อง cell จะไม่แสดงเครื่องหมายออก[']มาครับ
    (แต่จะยังมีอยู่ในช่อง formula ครับ) :)

    Comment by Pine — December 11, 2008
  • ง่ะ ผมลองเปิดใน excel 2003 กะ 2007
    มันโชว์ ['] ในช่อง cell ด้วยครับ แหะ แหะ

    แต่ถ้าเป็น open office จะไม่โชว์ ['] ในช่อง cell

    Comment by Pine — December 11, 2008
  • ถ้าเราจะเติมสีให้กับ row หรือ colum ได้รึป่าวค่
    ต้องยังงัยค่ะ ช่วยแนะนำหน่อยค่ะ

    Comment by sweet — March 19, 2009
  • ขอบคุณมากค่ะ ทำได้แล้ว ดีมากเลยด้วย

    Comment by sawitayu — June 19, 2009
  • ถ้าผมจะเพิ่มหน้า sheet ด้วย จะทำได้ยังไง ครับ

    Comment by nava — December 28, 2009
  • สงสัยต้องไปใช้วิธี เขียนออกมาเป็น .xml ครับแต่ว่าเป็น format excel นะลอง search หาดูประมาณนี้

    Comment by Pipo — December 28, 2009

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress | Aeros Theme | TheBuckmaker.com WordPress Themes