ให้เรตสมาชิก: 1 / 5

ดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

การเขียน 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, jmcnamara@cpan.org

# 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)

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
อยากทราบวิธีตรวจสอบว่าอาเรย์ 2 ชุดมีค่าเหมือนกันหรือเปล่า ครับ
โดย waterwelon อ 25 ก.พ. 2020 3:32 pm บอร์ด Programming - PHP
0
28
อ 25 ก.พ. 2020 3:32 pm โดย waterwelon
ความแข็งแกร่ง
โดย noppadonsk อ 25 ก.พ. 2020 11:13 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
10
อ 25 ก.พ. 2020 11:13 am โดย noppadonsk
อยากทราบวิธีตรวจสอบข้อมูลครับ
โดย waterwelon อ 25 ก.พ. 2020 10:58 am บอร์ด Programming - PHP
2
30
อ 25 ก.พ. 2020 11:13 am โดย Ittichai_chupol
Welcome to International school in Chonburi.
โดย tomtam1771 อ 25 ก.พ. 2020 12:30 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
8
อ 25 ก.พ. 2020 12:30 am โดย tomtam1771
วิธีปิด ไม่ได้ teamviewerd ทำงานบน Ubunto
โดย mindphp จ 24 ก.พ. 2020 4:31 pm บอร์ด Linux - Web Server
0
28
จ 24 ก.พ. 2020 4:31 pm โดย mindphp
แก้ปัญหา Vmware ของเรารัน Host ไม่ได้ เจอข้อความ This virtual machine is configured for 64-bit guest operating systems
โดย mindphp จ 24 ก.พ. 2020 3:37 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
895
จ 24 ก.พ. 2020 3:37 am โดย mindphp
จะทำอย่างไรให้ ค่าในอาเรย์ที่ซ้ำกันเหลือแค่ค่าเดียวครับ
โดย waterwelon ศ 21 ก.พ. 2020 2:04 pm บอร์ด Programming - PHP
2
48
ศ 21 ก.พ. 2020 2:34 pm โดย waterwelon
ความรุนแรงในเด็กๆ
โดย noppadonsk ศ 21 ก.พ. 2020 11:47 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
27
ศ 21 ก.พ. 2020 11:47 am โดย noppadonsk
องค์ประกอบพื้นฐานของการจัดทำ Extension ใน phpBB 3 ส่วนของ admin
โดย Ittichai_chupol พฤ 20 ก.พ. 2020 1:56 pm บอร์ด PHP Knowledge
0
31
พฤ 20 ก.พ. 2020 1:56 pm โดย Ittichai_chupol
ประทานโทษ
โดย noppadonsk พฤ 20 ก.พ. 2020 12:54 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
18
พฤ 20 ก.พ. 2020 12:54 pm โดย noppadonsk
มาแล้ว Plugin System MooZiiCart Auto Close สำหรับตั้งเวลาเปิดปิดระบบการสั่งซื้อสินค้าออนไลน์
โดย prmindphp พ 19 ก.พ. 2020 6:40 pm บอร์ด MindPHP News & Feedback
0
91
พ 19 ก.พ. 2020 6:40 pm โดย prmindphp
ถ้าคุณต้องเลือก
โดย noppadonsk พ 19 ก.พ. 2020 11:22 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
26
พ 19 ก.พ. 2020 11:22 am โดย noppadonsk
อยากจะทราบว่าวิธีการแสดงค่าอาเรย์แต่ล่ะค่าครับ
โดย waterwelon พ 19 ก.พ. 2020 11:04 am บอร์ด Programming - PHP
2
47
พ 19 ก.พ. 2020 11:58 am โดย thatsawan
คลายเครียด
โดย noppadonsk อ 18 ก.พ. 2020 2:50 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
43
อ 18 ก.พ. 2020 2:50 pm โดย noppadonsk
7 สิ่งที่ต้องปรับปรุงเพื่อลดค่า Bounce Rate บนหน้าเว็บไซต์
โดย phasamon อ 18 ก.พ. 2020 10:22 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
34
อ 18 ก.พ. 2020 10:22 am โดย phasamon
อยากให้ธุรกิจเป็นที่รู้จักบนโลกออนไลน์ ลองหาบริษัทรับทำ SEO ดูซิ !
โดย totheworld จ 17 ก.พ. 2020 3:34 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
74
จ 17 ก.พ. 2020 3:34 pm โดย totheworld
สี่เหตุผลที่ควรปรับปรุงเว็บไซต์
โดย phasamon จ 17 ก.พ. 2020 2:05 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
54
จ 17 ก.พ. 2020 2:05 pm โดย phasamon
อย่าได้พลาดเชียว
โดย noppadonsk จ 17 ก.พ. 2020 10:52 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
29
จ 17 ก.พ. 2020 10:52 am โดย noppadonsk
วิธีการแก้ไขปํญหา undefined index กรณีกำหนดเงือนไขเทียบค่าอาร์เรย์
โดย Ittichai_chupol ศ 14 ก.พ. 2020 5:50 pm บอร์ด PHP Knowledge
0
129
ศ 14 ก.พ. 2020 5:50 pm โดย Ittichai_chupol
เรื่องน่าเศร้า
โดย noppadonsk ศ 14 ก.พ. 2020 10:19 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
82
ศ 14 ก.พ. 2020 10:19 am โดย noppadonsk