Mindphp.com เว็บ สอนสร้างเว็บไซต์ ฐานข้อมูล php Javascript Ajax Jquery Html CSS CMS CRM และ เว็บเซอเวอร์ Hosting Web Server สอน Joomla phpbb JpGraph
Home บทความ เทคนิค การเขียน PHP php ออก report หรือ export เป็น excel รูปแบบไฟล์ 2 แบบ คือ .xls กับ .csv

php ออก report หรือ export เป็น excel รูปแบบไฟล์ 2 แบบ คือ .xls กับ .csv

เทคนิค การเขียน PHP

การเขียน php ออก report หรือ export เป็น excel รูปแบบไฟล์ 2 แบบ คือ .xls กับ .csv

ก่อนจะเริ่มดูโค้ด php มาทำความเข้าใจกันก่อนนะครับ
ในการเปิดหน้าเว็บจาก Browser ไม่ว่าจะเป็น IE,Firefox หรือ Browser ตัวอื่นๆ
ข้อมูลที่ เจ้า Browser มันมองจะมีสองส่วนคือ ส่วนของ Header กับ Data
1. Header คือ ส่วนที่ Browser จะดูว่าออกสาร หรือหน้าเว็บที่มันกำลังเปิดนั้นเป็นอะไร (โดยปกติจะเป็น text/html)
2. Data คือส่วนที่เป็นข้อมูลที่เราเห็น เช่นหน้าเว็บที่เราเห็น ถ้าเป็นเว็บเพจก็ จะเป็น tag html ซึ่ง browser จะแปลงเป็นรูปแบบที่เราเห็นๆ กันอยู่ดังตัวอย่าง
ของเว็บนี้ mindphp.com

ต่อไป มาดูว่าแล้วเราจะทำไงให้ php ของเราส่ง Header ให้ Browser เข้าใจว่าเป็น xls ไฟล์
เราต้องใช้ function header() ของ php เข้ามาช่วย
ตัวอย่าง
header("Content-Type: application/x-msexcel);
ต่อไปก็จะเป็น ส่วนของ Data เมื่อเรากำหนด ส่วนของ header ให้ Browser รู้แล้วว่าเราจะส่งข้อมูลที่ ต้องเปิดกับ โปรแกรม MS excel แล้วเราก็สามารถ
สร้าง ข้อมูล ด้วย php โดยอาจจะดึงข้อมูลจาก ฐานข้อมูล หรือ จากการคำนวนใน php ส่งออกไป
ข้อมูลที่จะส่งออกไป ผมขอแยกเป็น 2 แบบ คือ
1. ข้อมูลที่ เป็น text ธรรมดา
2. ข้อมูลที่เป็น รูปแบบ เฉพาะ ของ MS excel เช่น ใน celll มีสูตร หรือ กำนหนดให้แสดงเป็นค่า เงิน หรือ กำหนด แสดงเป็นวันเดือนปี หรือ ฯลฯ ตามความสามารถของ MS excel ที่มันทำได้ (แต่จะไม่รวม มาโครนะครับ)

แบบแรก
1.ทำข้อมูลเป็น text? โดยมี comma (,) ขั้น เรียกว่า csv ไฟล์
2. เป็นรูปแบบ tag html
3. ทำเป็น XML
อาจจะมีรูปแบบอื่นอีก? โดยข้อมูลพวกนี้ อย่างที่เรารู้กันอยู่แล้วคือ สามารถ echo หรือ print ค่าส่งให้ browser ได้เลย

แบบที่สอง
ข้อมูลรูปแบบเฉพาะของ MS excel ซึ่งต้องอาศัย lib เฉพาะ ที่จะแนะนำ มีอยู่ สองตัวคือ
1. สร้าง Object จาก new COM("Excel.application");?? ใช้ได้เฉพาะ Server ที่เป็น windows ซึ่งใน Object จะมี methode ให้ใช้งาน
ตัวอย่าง โค้ด
=====================================

// Starting Excel
header('Content-Type: application/x-msexcel');
header('Content-Disposition: inline; filename="mindphp_com.xls"');??? // ตั้งชื่อไฟล์
header("Pragma: no-cache");??? ??? ??? // บอก Browser ว่าไม่ต้อง เก็บ cache

$xlsApp = new COM("Excel.Application") or die("Unable to instanciate excel");
$xlsApp->Visible = 0;
$xlsApp->DisplayAlerts = 0;

// ข้อมูลที่จะเขียน ลง xls ไฟล์
echo 'Mindphp.com';
$xlsApp->Quit();
unset($xlsApp);
?>

===================================

2. Class write excel ซึ่งก็มีหลายตัว
เช่น
php_writeexcel Class


ตัวอย่าง โค้ด การ Export เป็น Excel ด้วย php_writeexcel Class


# Demonstrates Spreadsheet::WriteExcel's named colors and the Excel
# color palette.
#
# reverse('ฉ'), March 2002, John McNamara, อีเมลนี้จะถูกป้องกันจากสแปมบอท แต่คุณต้องเปิดการใช้งานจาวาสคริปก่อน

# PHP port by Johann Hanne, 2005-11-01

set_time_limit(10);

require_once "class.writeexcel_workbook.inc.php";
require_once "class.writeexcel_worksheet.inc.php";

$fname = tempnam("/tmp", "colors.xls");
$workbook = &new writeexcel_workbook($fname);

# Some common formats
$center? =& $workbook->addformat(array('align' => 'center'));
$heading =& $workbook->addformat(array('align' => 'center', 'bold' => 1));

# Try this to see the default Excel 5 palette
# $workbook->set_palette_xl5();

######################################################################
#
# Demonstrate the named colors.
#

$colors = array(
'black'=>0x08,
'blue'=>0x0C,
'brown'=>0x10,
'cyan'=>0x0F,
'gray'=>0x17,
'green'=>0x11,
'lime'=>0x0B,
'magenta'=>0x0E,
'navy'=>0x12,
'orange'=>0x35,
'purple'=>0x14,
'red'=>0x0A,
'silver'=>0x16,
'white'=>0x09,
'yellow'=>0x0D
);

$worksheet1 =& $workbook->addworksheet('Named colors');

$worksheet1->set_column(0, 3, 15);

$worksheet1->write(0, 0, "Index", $heading);
$worksheet1->write(0, 1, "Index", $heading);
$worksheet1->write(0, 2, "Name",? $heading);
$worksheet1->write(0, 3, "Color", $heading);

$i = 1;

foreach ($colors as $color=>$index) {
$format =& $workbook->addformat(array(
'fg_color' => $color,
'pattern'? => 1,
'border'?? => 1
));

$worksheet1->write($i+1, 0, $index,??????????????????? $center);
$worksheet1->write($i+1, 1, sprintf("0x%02X", $index), $center);
$worksheet1->write($i+1, 2, $color,??????????????????? $center);
$worksheet1->write($i+1, 3, '',??????????????????????? $format);
$i++;
}


######################################################################
#
# Demonstrate the standard Excel colors in the range 8..63.
#

$worksheet2 =& $workbook->addworksheet('Standard colors');

$worksheet2->set_column(0, 3, 15);

$worksheet2->write(0, 0, "Index", $heading);
$worksheet2->write(0, 1, "Index", $heading);
$worksheet2->write(0, 2, "Color", $heading);
$worksheet2->write(0, 3, "Name",? $heading);

for ($i=8;$i<=63;$i++) {
$format =& $workbook->addformat(array(
'fg_color' => $i,
'pattern'? => 1,
'border'?? => 1
));

$worksheet2->write(($i -7), 0, $i,??????????????????? $center);
$worksheet2->write(($i -7), 1, sprintf("0x%02X", $i), $center);
$worksheet2->write(($i -7), 2, '',??????????????????? $format);

# Add the? color names
foreach ($colors as $color=>$index) {
if ($i==$index) {
$worksheet2->write(($i -7), 3, $color, $center);
}
}
}

$workbook->close();

header("Content-Type: application/x-msexcel; name="mindphp-colors.xls"");
header("Content-Disposition: inline; filename="mindphp-colors.xls"");
$fh=fopen($fname, "rb");
fpassthru($fh);
unlink($fname);

?>


ตัวอย่าง จาก bettina-attack.de
example-bigfile.php (source code)
example-colors.php (source code)
example-demo.php (source code)
example-merge2.php (source code)
example-panes.php (source code)
example-repeat.php (source code)
example-simple.php (source code)
example-stocks.php (source code)
example-textwrap.php (source code)

User Rating: / 0
แย่ดีที่สุด 

หน้าเว็บบอร์ด Programming - PHP ตั้งกระทู้ใหม่ ใน Programming - PHP, phpBB3, SMF, Joomla, Wordpress, CMS CRM ตั้งกระทู้ใหม่ ใน phpBB3, SMF, Joomla, Wordpress, CMS CRM, JavaScript & Jquery Ajax ตั้งกระทู้ใหม่ ใน JavaScript & Jquery Ajax, SQL - Database ตั้งกระทู้ใหม่ ใน SQL - Database, ถาม - ตอบ คอมพิวเตอร์ ตั้งกระทู้ใหม่ ใน ถาม - ตอบ คอมพิวเตอร์, PHP Knowledge ตั้งกระทู้ใหม่ ใน PHP Knowledge, PHP News ตั้งกระทู้ใหม่ ใน PHP News, HTML CSS ตั้งกระทู้ใหม่ ใน HTML CSS, Free PHP Code Download script ตั้งกระทู้ใหม่ ใน Free PHP Code Download script, Web Hosting Review - Free Host Share Host VPS ตั้งกระทู้ใหม่ ใน Web Hosting Review - Free Host Share Host VPS
หัวข้อกระทู้ ตอบ เปิดดู โดย
รบกวนสอบถามการรับค่าจาก textfile
โดย butterney 2012/05/15 19:16 บอร์ด Programming - PHP
6 120 2012/05/16 20:41
โดย butterney
มีปัญหาอ้ะครับ มาช่วยหน่อยนะครับ
โดย namkabz 2012/05/17 01:19 บอร์ด Programming - PHP
0 34 2012/05/16 18:19
โดย namkabz
สอบถาม เรื่อง "การสร้างดาต้าเบสสำหรับ Backup ครับ"
โดย Chayyim 2012/05/16 23:05 บอร์ด SQL - Database
0 41 2012/05/16 16:05
โดย Chayyim
ช่วยหน่อยคัฟ ไม่เก่ง PHP แต่พึ่งเริ่มทำงาน ติดปัญหาซะแร้ววว
โดย M&N 2012/05/04 16:03 บอร์ด Programming - PHP
3 431 2012/05/16 15:54
โดย tohkai_php
HTML5 สำหรับ Yii Framework
โดย mindphp 2012/04/17 09:32 บอร์ด PHP Knowledge
1 296 2012/05/16 15:50
โดย tohkai_php
รับสมัครพนังงานต่ำแหน่ง it support ครับ
โดย tohkai_php 2012/05/16 22:44 บอร์ด PHP News
0 46 2012/05/16 15:44
โดย tohkai_php
html5 + javascript เสมือน apps mobile เนียนมากๆครับ
โดย tohkai_php 2012/05/16 22:43 บอร์ด Free PHP Code Download script
0 45 2012/05/16 15:43
โดย tohkai_php
รบกวนขอความรู้ครับ
โดย Sum76 2009/02/06 20:13 บอร์ด Programming - PHP
3 398 2012/05/16 10:50
โดย malangtub
ขั้นตอนการทำงาน ระหว่าง Client - เว็บไซต์เรา และ facebook
โดย mindphp 2011/12/13 08:08 บอร์ด Programming - PHP
1 582 2012/05/16 10:45
โดย malangtub
ใช้ php สร้าง WebServices ด้วย PHPSoap
โดย batman1292 2012/05/08 03:02 บอร์ด PHP Knowledge
5 666 2012/05/16 10:35
โดย malangtub
ถามเกี่ยวกับสคริป php หน่อยคับ โทษทีถ้าถามผิดห้อง
โดย youscoms 2012/04/24 01:49 บอร์ด Programming - PHP
4 623 2012/05/16 10:24
โดย บุคคลทั่วไป
ปัญหาการติดตั้ง magento Database connection error.
โดย docman 2012/04/24 21:13 บอร์ด Programming - PHP
2 336 2012/05/16 10:22
โดย malangtub
php มีคำสั่ง block แถบเมนูไหมค่ะ
โดย NatoOne 2012/04/21 23:01 บอร์ด Programming - PHP
6 590 2012/05/16 10:21
โดย malangtub
Count down Javascript โปรเจ็คเกี่ยวกับการทำข้อสอบ
โดย ultraman_neww 2012/05/06 02:50 บอร์ด Programming - PHP
4 453 2012/05/16 10:16
โดย malangtub
ถามเกี่ยวกับหน้า login และ timestamp หน่อยครับ
โดย OneLifeBegin 2012/04/24 18:25 บอร์ด Programming - PHP
13 1611 2012/05/16 08:41
โดย ekaja
ที่ตั้งการ upload
โดย Pleumiie 2012/04/24 23:08 บอร์ด Programming - PHP
6 391 2012/05/16 08:30
โดย ekaja
เพิ่มพลังในการทำงานด้วยสิ่งนี้ดีกว่า อิอิ
โดย oliveen 2012/05/15 23:24 บอร์ด โหลดโปรแกรม พูดคุยเรื่องทั่วไป จับฉ่าย
1 242 2012/05/15 16:24
โดย starseed
มีปัญหาตารางของฐานข้อมูลมันแสดงขึ้นมาว่า "in use" ครับ
โดย Nakorn1911 2012/05/15 01:53 บอร์ด SQL - Database
3 154 2012/05/15 13:33
โดย Nakorn1911

New Members

sirintra : 16/05/2012 ปาริชาติ รัชฎาศรี : 16/05/2012 margarin : 16/05/2012 Chayyim : 16/05/2012 masteriii : 16/05/2012 ekaja : 16/05/2012 starseed : 15/05/2012 chanthasone : 15/05/2012 butterney : 15/05/2012 True_net : 15/05/2012 bethezank : 15/05/2012 potae2424 : 15/05/2012 theoldza123 : 14/05/2012 nano  kigk : 14/05/2012 numtip : 14/05/2012 bonus82 : 13/05/2012 momay : 13/05/2012 ploy171499 : 13/05/2012 kai2104 : 12/05/2012 ouizzzz : 11/05/2012