|
|
|
แก้ปัญหาภาษาไทย กับการใช้ php ร่วมกับ Word เพื่อออกรายงาน |
|
|
|
|
|
|
|
เมื่อเราต้องการ open MS word จาก PHP แล้วส่งภาษาไทยที่ เป็น UF8 (MS ใช้ UTF8) บางครั้งภาษาไทยที่ได้มีอักษรจีนติดมาด้วย
ปกติแล้วไม่น่าเกิด ที่ผมทดลองทำเปลี่ยน จาก cp874 เป็น UTF-8 หรือTIS-620 ก็ไม่ได้
การแก้ปัญหาจะทำดังนี้
- สร้าง word แล้วจัดแต่งตามที่เราต้องการ แปลง Word ให้เป็น XML format
- เปิด xml แล้วใส่ข้อมูลด้วยคำสั่ง file_get_contents file_put_contents
$section = file_get_contents('D:/Doc6.xml');
$svpr = "ไม่สามารถเข้าไปอนุมัติเวลาการจ่ายเงินได้";
- แปลงให้เป็น UTF8
$svpr = iconv("CP874", "UTF-8",$svpr)
$section = str_replace('{6}',$svpr,$section);
file_put_contents ('D:/Doc61.xml',$section);
- Open word ด้วยคำสั่ง
$Wrd = new COM("word.application", NULL, CP_UTF8) or Die ("Did not instantiate Word");
$DocName = "D:/Doc71.doc";
$WrdDoc = $Wrd->Documents->Open("D:/Doc61.xml");
- ใส่รูป ที่ bookmark F1 ด้วยคำสั่ง
Code (PHP)
If ($WrdDoc->Bookmarks->Exists("f1")) {
$WrdDoc->Bookmarks->item("f1")->Select;
if (file_exists ("D:/Project2014/job_u/BTGLOGHRSS_Man/zz.jpg") ) {
$myPic = $WrdDoc->Bookmarks->item("f1")->Range->InlineShapes->AddPicture("D:/Project2014/job_u/BTGLOGHRSS_Man/zz.jpg", False, True);
$myPic->ScaleHeight = 50;
$myPic->ScaleWidth = 50;
}
}
- การสร้าง Bookmark ต้องเลือกตำแน่ง(ไม่เลือก range ที่ทับกับ Object อื่น)เท่านั้น ถ้าเลือกเป็นช่วง(range) ภาษาไทยก็ อ่านไม่ออกเช่นกัน
- save
$Wrd->Documents[1]->SaveAs($DocName);
$Wrd->Quit;
$Wrd = null;
unset($Wrd);
- เสร็จก็เปิดได้ตามปกติ สร้างรายงาน ได้ทั้ง Word และ Excel ได้เหมือนกัน สั่นๆง่ายๆ
Tag : PHP, Word (Word.Application), Excel (Excel.Application)
|
|
|
|
|
|
Date :
2014-03-15 18:50:50 |
By :
pythong |
View :
1139 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จัดไปครับ
|
|
|
|
|
Date :
2014-03-15 19:33:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เก่งจัง
|
|
|
|
|
Date :
2014-03-15 20:45:39 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|