ส่งข้อมูลไฟล์ .php ไปยัง Excel เป็นภาษาต่างด้าวแก้ยังไงครับ

Post a reply

Smilies
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ส่งข้อมูลไฟล์ .php ไปยัง Excel เป็นภาษาต่างด้าวแก้ยังไงครับ

by mindphp » 25/12/2006 2:27 pm

ลองเอา โค้ด โพสไว้ที่นี่นะครับ
http://meelink.com/webboard/index.php?a ... at&catid=3
เดี๋ยว เย็นๆ จะเข้าไปดู

by nott » 25/12/2006 2:22 pm

คือผมเอาโค๊ดที่พี่ post ไว้ให้ มารันในเครื่องผมโดยผมปรับแก้ตามที่พี่บอกโดยที่ต่างจากพี่ คือ ผมไม่ได้ดึงข้อมูลจากฐานข้อมูลเหมือนของพี่เพราะผมต้องการรู้แค่ว่า สามารถรันภาษาไทยแล้วออกมาเป็นภาษาไทยในเครื่องผมได้หรือเปล่า เมื่อผมลองรันดูปรากฏว่า มี error ได้ ที่ file class.writeexcel_olewriter.inc แต่โปรแกรมสามารถแปลงเป้น file แต่ไม่มีข้อมูล รบกวนหน่อยน่ะคับ ผมส่งโค้ดให้พี่แต่ส่งไม่ได้

by mindphp » 25/12/2006 12:08 pm

แก้ อะไร หรือครับ โค้ดเป็น ยัง ไง
มอง ภาพ สิ่งที่คุณ ทำไม่ออก นะครับ ทำแะไร ไปถึงไหน อย่าง ไร

by nott » 25/12/2006 10:57 am

ต้องแก้ตรงอื่นอีกหรือเปล่าครับ
# $fh=fopen($this->_tmpfilename, "w+b");
ข้างบนนี้ผมแก้ถูกหรือเปล่าครับ

by mindphp » 25/12/2006 10:44 am

fputs เป็น function ในการเขียนไฟล์ นะครับ คิดว่า อาจจะเป็น ที่ สิทธิ ในการเขียนไฟล์
ลอง เอามาดูก็ได้นะครับ

by nott » 25/12/2006 10:32 am

ผมทำตามที่บอกแล้วครับแต่มันยังไม่ได้ มันบอกว่า error fputs($this->_filehandle, $unknown3);ของไฟชื่อ class.writeexcel_olewriter.inc error หลายบรรทัดครับ

by mindphp » 22/12/2006 6:23 pm

ถ้า ไม่มีอธิบายไว้ ลอง ใช้ ของ ที่ นี่ ดูครับ

เครื่องมือสำหรับการสร้างไฟล์ Excel

1. PHP WriteExcel Class สำหรับสร้างไฟล์ Excel ดาวน์โหลดได้จาก http://www.bettina-attack.de/jonny/view ... writeexcel



วิธีการเขียนให้ PHP สามารถ Export ออกมาเป็น Excel

1. เมื่อดาวน์โหลดไฟล์ PHP WriteExcel Class มาแล้วก็ทำการแตกลง Directory ไหนก็ได้นะครับยกตัวอย่างเช่น /home/phpexcel

2. ใน Directory /home/phpexcel ให้เอาแต่ไฟล์ที่มีชื่อขึ้นต้นด้วย class.* มานอกนั้นลบไปได้เลยครับ

3. ในไฟล์ class.writeexcel_worksheet.inc.php ให้ไปหาคำว่า $fh=fopen(tempnam พอเจอแล้ว Comment ด้วย # ด้านหน้าสุดของบรรทัดเลยครับ

4. ในไฟล์ class.writeexcel_worksheet.inc.php ให้หาคำว่า $this->_print_gridlines = 1; ให้แก้เป็น $this->_print_gridlines = 0;

5. วิธีการเขียนโปรแกรมให้ Export ออกมาเป็น Excel



<?

require_once "/home/phpexcel/class.writeexcel_workbook.inc.php";

require_once "/home/phpexcel/class.writeexcel_worksheet.inc.php";

$token = md5(uniqid(rand(), true));

$fname= "../tmp/$token.xls";

$workbook =& new writeexcel_workbook($fname);



$worksheet =& $workbook->addworksheet("ข้อมูลนักศึกษาที่ลงทะเบียน");

$worksheet->set_margin_right(0.50);

$worksheet->set_margin_bottom(1.10);



## Set Format ##

$xlscelldesc_header =& $workbook->addformat();

$xlscelldesc_header->set_font('Angsana New');

$xlscelldesc_header->set_size(18);

$xlscelldesc_header->set_color('black');

$xlscelldesc_header->set_bold(1);

$xlscelldesc_header->set_text_v_align(1);

$xlscelldesc_header->set_merge(1);



$xlsCellDesc =& $workbook->addformat();

$xlsCellDesc->set_font('Angsana New');

$xlsCellDesc->set_size(14);

$xlsCellDesc->set_color('black');

$xlsCellDesc->set_bold(1);

$xlsCellDesc->set_align('left');

$xlsCellDesc->set_text_v_align(1);

## End of Set Format ##



## Set Column Width & Height กำหนดความกว้างของ Cell

$worksheet->set_column('A:B', 2);

$worksheet->set_column('B:C', 4);

$worksheet->set_column('C:D', 11.29);

$worksheet->set_column('D:E', 21);

$worksheet->set_column('E:F', 15);

$worksheet->set_column('F:G', 32);

$celldesc_h = 16.50;



## Writing Data เพิ่มข้อมูลลงใน Cellง

$worksheet->write_blank(A1,$xlscelldesc_header);

$worksheet->write(B1,"ข้อมูลนักศึกษาที่ลงทะเบียน ภาคเรียนที่ $semester ปีการศึกษา $year", $xlscelldesc_header);

$worksheet->write_blank(C1,$xlscelldesc_header);

$worksheet->write_blank(D1,$xlscelldesc_header);

$worksheet->write_blank(E1,$xlscelldesc_header);

$worksheet->write_blank(F1,$xlscelldesc_header);



# กำหนดความสูงของ Cell

$worksheet->set_row(1, $celldesc_h);

$worksheet->set_row(2, $celldesc_h);

$worksheet->set_row(3, $celldesc_h);

$worksheet->set_row(4, $celldesc_h);

$worksheet->set_row(5, $celldesc_h);



$worksheet->write(B4, " รหัสวิชา :", $xlscelldesc_header);

$worksheet->write(D4, " $courseno ", $xlscelldesc_header);



$worksheet->write(B6,"ที่", $xlscelldesc_header);

$worksheet->write(C6,"รหัสนักศึกษา", $xlscelldesc_header);

$worksheet->write(D6,"ชื่อ - นามสกุล", $xlscelldesc_header);

$worksheet->write_blank(E6,$xlscelldesc_header);

$worksheet->write(F6," ", $xlscelldesc_header);

$xlsRow = 7;



# ตรงนี้คือดึงข้อมูลจาก mysql มาใส่ใน Cell

while(list($id,$prename,$name,$sname)=mysql_fetch_row($result)) {

++$i;

$worksheet->set_row($xlsRow, 19.80);

$worksheet->write("B$xlsRow", "$i", $xlsCellDesc);

$worksheet->write("C$xlsRow", "$id", $xlsCellDesc);

$worksheet->write("D$xlsRow", "$prename$name", $xlsCellDesc);

$worksheet->write("E$xlsRow", "$sname", $xlsCellDesc);

$worksheet->write("F$xlsRow", "......................................................................", $xlsCellDesc);

$xlsRow++;

}



# เสร็จแล้วก็ส่งไฟล์ไปยัง Browser ครับแค่นี้ก็เสร็จแล้ว

$workbook->close();

header("Pragma: public");

header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Content-Type: application/force-download");

header("Content-Type: application/octet-stream");

header("Content-Type: application/download");

header("Content-Disposition: attachment; filename=".basename("ชื่อไฟล์.xls").";");

header("Content-Transfer-Encoding: binary\r\n");

header("Content-Length: ".filesize($fname));

readfile($fname);

unlink($fname);

exit();

?>





6. เพียงเท่านี้ท่านก็สามารถทำ Report ที่ Print ออกมาสวยหรูแถมยังเอาไปใช้คำณวณได้ด้วย Excel

7. สำหรับใครต้องการให้แสดงเป็นรูปแบบใดก็สามารถพลิกแพลงได้ตามใจชอบครับ ลองดูตัวอย่างที่ผมทำไว้ใช้งานจริงได้ที่

http://www3.reg.cmu.ac.th/regist246/pub ... =precourse ให้ลองกดตรงปุ่มดาวน์โหลดดูนะครับ จะมีการสร้าง Report หลายรูปแบบเอาไว้ ลองปริ้นออกมาดูแต่ละแบบก็ได้นะครับจะเห็นข้อแตกต่าง คราวหน้าผมจะมาพูดถึงรูปแบบอื่นๆ อีก

ที่มา : บอร์ดไทยแอดมิน

by mindphp » 22/12/2006 6:21 pm

อันนี้ เป็น class ที่ เอา ของคนอื่นมา อีกทีใช่มั๊ยคับ
ต้อง ลอง ดู คู่ มี อธิบาย เกี่ยวกับ การ กำหนด headers นะครับ

Top