Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > มีปัญหากับการใช้งาน PHPExcel กับฐานข้อมมูล Oracel 10g



 

มีปัญหากับการใช้งาน PHPExcel กับฐานข้อมมูล Oracel 10g

 



Topic : 067894



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



สอบถามท่านที่เคยใช้งาน PHPExcel จากที่วุ่นอยู่หลายวันและมีปัญหาเรื่องภาษาไทย ครับเจ้า PHPExcel กับฐานข้อมมูล Oracel 10g
ซึ่งก่อนสอบถามผมได้ค้นหาการแก้ปัญาในเวปและหลายๆ เวปแล้วยังไม่สามารถแก้ไขปัญหาได้

ได้ลองทำการแก้ไขปัญหาดังนี้

- กำหนดเอกสาร php ให้ตรงกับ DB
putenv("NLS_LANG=THAI_THAILAND.TH8TISASCII");

- ใช้ iconv จาก utf-8 เป็น tis-620

- เซ็คฟอนต์ setName('Arial'); ทั้ง Angsana new รวมทั้งฟอนต์ชนิดอื่นๆ ลองมาหมดแล้ว

- กำหนด เฮดเดอร์ให้ header('Content-Type: application/vnd.ms-excel;charset=utf-8'); แล้วยังไม่ได้

- แก้ไฟล์ PHPExcel ที่โฟเดอร์ Shared/font.php บรรทัดที่ 545 เป็น

case 'AngsanaUPC':return self::CHARSET_ANSI_THAI;

- แก้ไฟล์ไลบาลี่ PHPExcel ที่โฟเดอร์ Shared/String.php บรรทัดที่ 306 เป็น
-if (!@iconv_substr('A', 0, 1, 'UTF-8')) {
// จากของเดิม if (!@iconv('UTF-8', 'UTF-16LE', 'x')) {


สรุปคือยังไม่สามารถใช้งานภาษาไทย ซึ่งไม่ทราบสาเหตุเกิดจากอะไร
Oracel 10g เซ็ต NLS_CHARACTERSET เป็น TH8TISASCII


มาดูโด้ดกันเลย

Code (PHP)
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load('asset_report-2.xls');
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(11); 

# Properties xlsx document 
$objPHPExcel->getProperties()->setCreator("tummavong")
							 ->setLastModifiedBy("IT")
							 ->setTitle("report")
							 ->setSubject("report")
							 ->setDescription("Report asset control system")
							 ->setKeywords("xlsl")
							 ->setCategory("Report");
							 
$objPHPExcel->getActiveSheet()->setTitle('Asset');
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);

$Sheet = $objPHPExcel->getActiveSheet();
$j = (int)2 ;
for($i = 0; $i<=$count; $i++){
	$Sheet->setCellValue('A'.$j,$result['ASS_NO'][$i]);
	$Sheet->getStyle('A'.$j)->getNumberFormat()->setFormatCode('000000');
	$Sheet->getStyle('A'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
	$Sheet->setCellValue('B'.$j,$result['PO_NO'][$i]);
	$Sheet->getStyle('B'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
	$Sheet->setCellValue('C'.$j,$result['DATE_REQ'][$i]);
	$Sheet->getStyle('C'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
	$Sheet->setCellValue('D'.$j,$result['MODEL'][$i]);
	$Sheet->setCellValue('E'.$j,$result['SERVICE_TAG'][$i]);
	$Sheet->getStyle('E'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
	$Sheet->setCellValue('F'.$j,$result['PRICE'][$i]);
	$Sheet->getStyle('F'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
	$Sheet->getStyle('F'.$j)->getNumberFormat()->setFormatCode('#,##0.00');
	$Sheet->setCellValue('G'.$j,iconv("TIS-620","UTF-8",$result['USR_REQ'][$i]));
	$Sheet->setCellValue('H'.$j,iconv("UTF-8","TIS-620",$result['USR_REQ'][$i]));
	$Sheet->setCellValue('I'.$j,$result['USR_REQ'][$i]);
	$Sheet->setCellValue('J'.$j,"ภาษาไทย");
	$j++;
}

header('Content-Type: application/vnd.ms-excel;charset=tis-620');
header('Content-Disposition: attachment;filename="asset_10report.xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit; 



$result คือตัวแปลที่ query จาก DB

ผลคือไม่แสดงภาษาไทย




Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-10-11 13:37:44 By : tummavong View : 1347 Reply : 7
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Code (PHP)
header('Content-Type: application/vnd.ms-excel;charset=utf-8'); 


คุณน่าจะใช้ TIS ถึงจะถูกน่ะครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-11 14:54:45 By : webmaster
 


 

No. 2



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


จะ utf ก็ utf ให้หมด จะ tis ก้ tis ให้หมด อย่าสลับไปสลับมา ผมดูจากโค๊ดนะ

ดูไฟล์ที่ gen excel ด้วย ดูเหมือนจะเป็น ansi อยู่นะผมดูจาก Output
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-11 15:23:28 By : ikikkok
 

 

No. 3



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ผมลอง tis-620 ก็ยังไม่ออกครับ


ตอบความคิดเห็นที่ : 2 เขียนโดย : ikikkok เมื่อวันที่ 2011-10-11 15:23:28
รายละเอียดของการตอบ ::

ส่วนไหนครับ Query ในไฟล์เดียวกันครับ แล้ว loop output มาแสดงเลยครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-11 16:05:51 By : tummavong
 


 

No. 4



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ผมอยากให้เทสดูก่อนว่าเกิดจากข้อมูลที่อ่านมาจาก db หรือว่าเป็นตั้งแต่ file encoding

โดยเขียนโค๊ดประมาณนี้แล้วยัดข้อความภาษาไทยเข้าไปในเซลล์ แล้วรันดูครับว่าออกมายังไง โดยยังไม่ต้อง set header อะไรเลยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-11 16:28:16 By : ikikkok
 


 

No. 5



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 4 เขียนโดย : ikikkok เมื่อวันที่ 2011-10-11 16:28:16
รายละเอียดของการตอบ ::

หลังจาก test คือผมลองยัดข้อความภาษาไทยโดยตรงเลยไม่ผ่าน DB สรุปคือไม่ได้แสดงภาษาไทย -*-
แต่มีข้อสังเกตที่ว่า คือผม test ผ่าน localhost แสดงภาษาไทยปกติ รวมทั้ง Query จาก DB กว่าก็แสดงปกติ ใช้คำสั่ง iconv แก้ไขได้เลย
แต่พออัพขึ้น Host จริงก็ไม่ได้แสดงภาษาไทยกับเจ้า PHPExcel เลย


แต่ในระบบอื่นๆ ของเวปที่ไม่ได้ใช้ PHPExcel Query มาแสดงในตารางก็ใช้ iconv แก้ไขปัญหาภาษาไทยได้เลยครับ พี่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-11 16:51:30 By : tummavong
 


 

No. 6



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ผมว่า encoding ของ db ฒันต่างจาก local ของคุณ ต้องลองครับแบบนี้ ผมก็บอกไม่ถูกเหมือนกัน ที่ผมแก้อย่างมากก็ใช้ iconv แปลงข้อมูลที่เป็นภาษาไทย แค่นั้น รอผู้มีประสบการณ์ท่านอื่นละกัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-11 17:19:43 By : ikikkok
 


 

No. 7



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 6 เขียนโดย : ikikkok เมื่อวันที่ 2011-10-11 17:19:43
รายละเอียดของการตอบ ::
ขอบคุณมากครับพี่ ต้องรอให้ผู้มีประสบการณ์ท่านอื่นจริงๆ



ประวัติการแก้ไข
2011-10-12 08:29:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-12 08:12:15 By : tummavong
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มีปัญหากับการใช้งาน PHPExcel กับฐานข้อมมูล Oracel 10g
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่