ให้เรตสมาชิก: 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)

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีกำหนดให้ หลายๆ IP และ Localhost เชื่อมต่อ มาที่ PostgreSQL Server ได้
โดย mindphp จ 13 ส.ค. 2018 6:00 pm บอร์ด PostgreSQL
0
8
จ 13 ส.ค. 2018 6:00 pm โดย mindphp
ช่วยหน่อยค่ะ ทำอย่างไรให้หน้า QRCode ให้ไปรัยอยู่ที่หน้า Fromregister
โดย supattra_su อ 12 ส.ค. 2018 7:01 pm บอร์ด Programming - PHP
0
8
อ 12 ส.ค. 2018 7:01 pm โดย supattra_su
วิธีเมิร์ชเลเยอร์ทั้งหมดในครั้งเดียว ใน Photoshop
โดย anuwat somsakul ส 11 ส.ค. 2018 6:48 pm บอร์ด CSS Knowledge
0
15
ส 11 ส.ค. 2018 6:48 pm โดย anuwat somsakul
การใช้งาน โมดูล radom ในการสุ่มคำ
โดย tatiya ส 11 ส.ค. 2018 6:41 pm บอร์ด Programming - C/C++ & java & Python
0
15
ส 11 ส.ค. 2018 6:41 pm โดย tatiya
รูปแบบการนำส่งข้อมูลภาษีเงินได้หัก ณ ที่จ่ายยื่นด้วยสื่อบันทึกข้อมูลในระบบคอมพิวเตอร์ หรืออินเทอร์เน็ต
โดย thatsawan ส 11 ส.ค. 2018 4:49 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
19
ส 11 ส.ค. 2018 4:49 pm โดย thatsawan
B - ฐานเทส User กด Preferences ระบบแจ้งข้อความ error
โดย rinrada ส 11 ส.ค. 2018 2:46 pm บอร์ด Hachanna - Testter
0
5
ส 11 ส.ค. 2018 2:46 pm โดย rinrada
[ปัญหา] การสร้าง package ใน pycharm
โดย anuwat somsakul ส 11 ส.ค. 2018 11:51 am บอร์ด Programming - C/C++ & java & Python
2
28
ส 11 ส.ค. 2018 11:58 am โดย anuwat somsakul
ตัวช่วยในการซ่อนบทความในบางส่วนที่สำคัญด้วย PayToRead ในเว็บไซต์
โดย Parichat ส 11 ส.ค. 2018 11:38 am บอร์ด PHP News
0
27
ส 11 ส.ค. 2018 11:38 am โดย Parichat
B - Customize Details ต้องไปเเสดงที่ใบเสนอราคาด้วย เเละต้องเลือกคำนวนราคา รวม vat
โดย thatsawan ส 11 ส.ค. 2018 10:04 am บอร์ด M.D.Soft Co.,Ltd. - Tester
0
2
ส 11 ส.ค. 2018 10:04 am โดย thatsawan
งานประจำวันที่ 11 สิงหาคม 2561
โดย tatiya ส 11 ส.ค. 2018 9:52 am บอร์ด M065 - ตติยะ นาชัย
1
8
ส 11 ส.ค. 2018 7:15 pm โดย tatiya
งานประจำวันที่ 11 สิงหาคม 2561
โดย anuwat somsakul ส 11 ส.ค. 2018 9:52 am บอร์ด M067 - นายอนุวัฒน์ สมสกุล
1
7
ส 11 ส.ค. 2018 7:13 pm โดย anuwat somsakul
สอบถาม แก้ไขภาษาไทย Netbean 8.2 เพี้ยน
โดย AePongsak ศ 10 ส.ค. 2018 5:35 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
46
ศ 10 ส.ค. 2018 5:44 pm โดย AePongsak
รบกวนขอเว็บ api IP Address XML แบบฟรีหน่อยครับ
โดย AePongsak ศ 10 ส.ค. 2018 5:12 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
36
ศ 10 ส.ค. 2018 5:12 pm โดย AePongsak
ขอสูตรวิธีคำนวณมือฟังก์ชั่น FV ค่ะ
โดย pprn ศ 10 ส.ค. 2018 4:54 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
1
34
ศ 10 ส.ค. 2018 6:56 pm โดย taemmynatchapon
Q - หน้าดูประวัติขึ้น error 'Table History not supported. File not found.'
โดย Parichat ศ 10 ส.ค. 2018 4:39 pm บอร์ด Joomla Dev
1
2
ศ 10 ส.ค. 2018 4:48 pm โดย Parichat
Q - สอบถามวิธีตัดคำที่ไม่จำเป็นทิ้งครับ
โดย tatiya ศ 10 ส.ค. 2018 4:23 pm บอร์ด Programming - C/C++ & java & Python
1
45
ส 11 ส.ค. 2018 12:09 pm โดย thatsawan
B - แสดงรายการข้อมูลผิดพลาดเมื่อมี Stock ไม่พอย้าย เป็นสถานะ running
โดย wilawan ศ 10 ส.ค. 2018 1:48 pm บอร์ด Hachanna - Testter
0
7
ศ 10 ส.ค. 2018 1:48 pm โดย wilawan
การทำภาพ Polaroid/card ใน CSS
โดย anuwat somsakul ศ 10 ส.ค. 2018 11:35 am บอร์ด CSS Knowledge
2
35
ศ 10 ส.ค. 2018 1:04 pm โดย anuwat somsakul
วิธีตัดภาพด้วย Lasso Tool ใน Photoshop
โดย tai14 ศ 10 ส.ค. 2018 10:42 am บอร์ด Graphic design
0
26
ศ 10 ส.ค. 2018 10:42 am โดย tai14
ตัวช่วยในการเพิ่ม Link Article ให้กับบทความในเว็บไซต์
โดย Parichat ศ 10 ส.ค. 2018 10:03 am บอร์ด PHP News
0
20
ศ 10 ส.ค. 2018 10:03 am โดย Parichat