หลังจากได้ทดลองสร้างไฟล์ PDF จากไลบรารี่ ของ PHPExcel แล้วไม่รองรับภาษาไทย ซึ่งจะทำให้ภาษาไทยเป็นตัวอักษร สี่เหลี่ยม บทความนี้เราจะมาดูวิธีการทำให้ PDF รองรับภาษาไทยกัน
PHPExcel ใช้งาน TCPDF
1. ดาวน์โหลดฟ้อนท์ไทยก่อนที่ http://komsitr.net/?p=18
2. แตกไฟล์แล้วก็อบเอาฟ้อนท์ที่จะใช้งานไป ตัวอย่าง ผมใช้ angsanaupc ซึ่งจะมี 3 ไฟล์ที่จะต้องเลือก คือ angsanaupc.ctg.z , angsanaupc.php และ angsanaupc.z
ไปวางที่ \Classes\PHPExcel\Shared\PDF\fonts
3.$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('angsanaupc');
ปรับค่า setName ตามอักษรที่เราต้องการ
แล้วทดลองออกรายงานเป็น pdf เช่นเดิม โดยไม่ต้องใช้ iconv ครับ
ขอบคุณ เว็บ http://komsitr.net/?p=18
อ่านเพิ่มเติม http://phpexcel.codeplex.com/Thread/View.aspx?ThreadId=232179
ป.ล.อาจจะมีวีธีที่ดีกว่านี้ซึ่งผมยังไม่เจอครับ
18 มกราคม 2554
14 มกราคม 2554
การใช้งาน PHPExcel Class สร้างไฟล์ PDF
ดาวน์โหลด Class มาจาก : http://phpexcel.codeplex.com/releases/view/26479 เวอร์ชั่นล่าสุด: 1.7.5
วิธีการใช้งาน Class เพื่อสร้างไฟล์ PDF ลักษณะการทำงานก็คล้าย ๆ กับการสร้างไฟล์ xls ดังนี้
<?php
/** Error reporting */
error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
/** PHPExcel */
require_once 'Classes/PHPExcel.php'; // แทรก Class ที่ดาวโหลดมา
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("Chaiwit");
//Setting a worksheet's page orientation and size
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); // กำหนดแนวตั้ง / แนวนอน
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); // กำหนดขนาดกระดาษ
//Page Setup: Scaling options
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1); // กำหนดมาตราส่วน หรือไม่ก็ได้
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0); // กำหนดมาตราส่วน หรือไม่ก็ได้
//Page margins // กำหนดระยะขอบ
$objPHPExcel->getActiveSheet()->getPageMargins()->setTop(1); // กำหนดระยะขอบ บน
$objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0.75); // กำหนดระยะขอบ ขวา
$objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.75); // กำหนดระยะขอบ ซ้าย
$objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(1); // กำหนดระยะขอบ ล่าง
// Add some data วนลูปแสดงข้อมูล
$txt = range('A','O');
for($i=0; $i< 30; $i++){
foreach($txt as $key => $val)
{
$objPHPExcel->getActiveSheet()->getColumnDimension(''.$val.'')->setWidth(9.5); // กำหนดความกว้าง
$objPHPExcel->getActiveSheet()->getRowDimension(''.$i.'')->setRowHeight(23); // กำหนดความสูงของแถว
$objPHPExcel->setActiveSheetIndex(0)->setCellValue(''.$val.''.$i.'', ''.$key.''); // เพิ่มค่า
// กำหนดสีพื้นหลังให้ cell
$objPHPExcel->getActiveSheet()->getStyle(''.$val.''.$i.'')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle(''.$val.''.$i.'')->getFill()->getStartColor()->setARGB('5c5cb3fc');
}
}
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('Chaiwit');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename="'.iconv('UTF-8','TIS-620','ชัยวิทย์').'.pdf"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); // จุดที่แตกต่างไปจากการสร้างไฟล์ excel
$objWriter->save('php://output');
exit;
?>
วิธีการใช้งาน Class เพื่อสร้างไฟล์ PDF ลักษณะการทำงานก็คล้าย ๆ กับการสร้างไฟล์ xls ดังนี้
<?php
/** Error reporting */
error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
/** PHPExcel */
require_once 'Classes/PHPExcel.php'; // แทรก Class ที่ดาวโหลดมา
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("Chaiwit");
//Setting a worksheet's page orientation and size
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); // กำหนดแนวตั้ง / แนวนอน
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); // กำหนดขนาดกระดาษ
//Page Setup: Scaling options
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1); // กำหนดมาตราส่วน หรือไม่ก็ได้
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0); // กำหนดมาตราส่วน หรือไม่ก็ได้
//Page margins // กำหนดระยะขอบ
$objPHPExcel->getActiveSheet()->getPageMargins()->setTop(1); // กำหนดระยะขอบ บน
$objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0.75); // กำหนดระยะขอบ ขวา
$objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.75); // กำหนดระยะขอบ ซ้าย
$objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(1); // กำหนดระยะขอบ ล่าง
// Add some data วนลูปแสดงข้อมูล
$txt = range('A','O');
for($i=0; $i< 30; $i++){
foreach($txt as $key => $val)
{
$objPHPExcel->getActiveSheet()->getColumnDimension(''.$val.'')->setWidth(9.5); // กำหนดความกว้าง
$objPHPExcel->getActiveSheet()->getRowDimension(''.$i.'')->setRowHeight(23); // กำหนดความสูงของแถว
$objPHPExcel->setActiveSheetIndex(0)->setCellValue(''.$val.''.$i.'', ''.$key.''); // เพิ่มค่า
// กำหนดสีพื้นหลังให้ cell
$objPHPExcel->getActiveSheet()->getStyle(''.$val.''.$i.'')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle(''.$val.''.$i.'')->getFill()->getStartColor()->setARGB('5c5cb3fc');
}
}
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('Chaiwit');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename="'.iconv('UTF-8','TIS-620','ชัยวิทย์').'.pdf"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); // จุดที่แตกต่างไปจากการสร้างไฟล์ excel
$objWriter->save('php://output');
exit;
?>
13 มกราคม 2554
การใช้งาน PHPExcel
วิธีการเริ่มต้น การใช้งาน PHPExcel
----------------------------------------------------------------------------------
<?php
/** PHPExcel */
require_once 'Classes/PHPExcel.php'; // แทรก Class ที่ดาวโหลดมา
// Create new PHPExcel object // เริ่มต้นสร้าง object
$objPHPExcel = new PHPExcel();
// Set properties // ระบุผู้สร้างไฟล์ จะระบุหรือไม่ก็ได้
$objPHPExcel->getProperties()->setCreator("Chaiwit");
//+ กำหนดชื่อ ฟอนต์ ที่จะใช้งาน
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
//+ กำหนดขนาด ฟอนต์
$objPHPExcel->getDefaultStyle()->getFont()->setSize(15);
// Add some data // เริ่มต้นแสดงข้อมูล
$txt = range('A','E');
for($i=0; $i< 8; $i++){
foreach($txt as $key => $val)
{
$objPHPExcel->getActiveSheet()->getColumnDimension(''.$val.'')->setWidth(10); // กำหนดความกว้างของแถว $objPHPExcel->getActiveSheet()->getRowDimension(''.$i.'')->setRowHeight(23); // กำหนดความสูงของแถว
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(''.$val.''.$i.'', ''.$key.'');
}
}
// insert image // ตัวอย่างในการแทรกรูปภาพลงในไฟล์ ระบุที่เซล B15
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath('./Tests/images/officelogo.jpg');
$objDrawing->setHeight(36);
$objDrawing->setWidth(100);
$objDrawing->setCoordinates('B15');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
// Rename sheet // สร้างชื่อ Sheet
$objPHPExcel->getActiveSheet()->setTitle('Chaiwit');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0); // กำหนดให้เมื่อเราเปิดไฟล์ให้แสดง sheet ไหนเป็นอันดับแรก
// Create a new worksheet, after the default sheet
$objPHPExcel->createSheet(); // ในกรณีที่เราสร้างหลาย ๆ Sheet ในงานไฟล์เดียว
/** PHPExcel_IOFactory */
require_once './Classes/PHPExcel/IOFactory.php';
// ตรงนี้เริ่มสู่กระบวนการสร้างไฟล์ xls
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('chaiwit.xls');
//$objWriter->save(''.iconv('UTF-8','TIS-620','ชัยวิทย์').'.xls'); // ใช้ในกรณีทำให้ไฟล์ที่ Save เป็นชื่อ ภาษาไทย
-------------------------------------------------------------------------------------------------
/* ตั้งแต่แถวนี้จะเป็นการใช้ในกรณีที่จะให้มันขึ้น Dialog มาเพื่อทำการ Save AS ไฟล์นั้น ใช้แทนคำสั่ง สร้างไฟล์ xls ด้านบน */
// redirect output to client browser
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Chaiwit.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
?>
แนะนำความรู้นี้โดย พี่ปลาทู แห่ง http://www.select2web.com/
หาความรู้เพิ่มเติมจาก Documentation ที่ให้มาพร้อมกับ Class ที่ดาวโหลดมาได้เลยครับ
ดาวน์โหลด : http://phpexcel.codeplex.com/releases/view/26479 เวอร์ชั่นล่าสุด: 1.7.5
----------------------------------------------------------------------------------
<?php
/** PHPExcel */
require_once 'Classes/PHPExcel.php'; // แทรก Class ที่ดาวโหลดมา
// Create new PHPExcel object // เริ่มต้นสร้าง object
$objPHPExcel = new PHPExcel();
// Set properties // ระบุผู้สร้างไฟล์ จะระบุหรือไม่ก็ได้
$objPHPExcel->getProperties()->setCreator("Chaiwit");
//+ กำหนดชื่อ ฟอนต์ ที่จะใช้งาน
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
//+ กำหนดขนาด ฟอนต์
$objPHPExcel->getDefaultStyle()->getFont()->setSize(15);
// Add some data // เริ่มต้นแสดงข้อมูล
$txt = range('A','E');
for($i=0; $i< 8; $i++){
foreach($txt as $key => $val)
{
$objPHPExcel->getActiveSheet()->getColumnDimension(''.$val.'')->setWidth(10); // กำหนดความกว้างของแถว $objPHPExcel->getActiveSheet()->getRowDimension(''.$i.'')->setRowHeight(23); // กำหนดความสูงของแถว
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(''.$val.''.$i.'', ''.$key.'');
}
}
// insert image // ตัวอย่างในการแทรกรูปภาพลงในไฟล์ ระบุที่เซล B15
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath('./Tests/images/officelogo.jpg');
$objDrawing->setHeight(36);
$objDrawing->setWidth(100);
$objDrawing->setCoordinates('B15');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
// Rename sheet // สร้างชื่อ Sheet
$objPHPExcel->getActiveSheet()->setTitle('Chaiwit');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0); // กำหนดให้เมื่อเราเปิดไฟล์ให้แสดง sheet ไหนเป็นอันดับแรก
// Create a new worksheet, after the default sheet
$objPHPExcel->createSheet(); // ในกรณีที่เราสร้างหลาย ๆ Sheet ในงานไฟล์เดียว
/** PHPExcel_IOFactory */
require_once './Classes/PHPExcel/IOFactory.php';
// ตรงนี้เริ่มสู่กระบวนการสร้างไฟล์ xls
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('chaiwit.xls');
//$objWriter->save(''.iconv('UTF-8','TIS-620','ชัยวิทย์').'.xls'); // ใช้ในกรณีทำให้ไฟล์ที่ Save เป็นชื่อ ภาษาไทย
-------------------------------------------------------------------------------------------------
/* ตั้งแต่แถวนี้จะเป็นการใช้ในกรณีที่จะให้มันขึ้น Dialog มาเพื่อทำการ Save AS ไฟล์นั้น ใช้แทนคำสั่ง สร้างไฟล์ xls ด้านบน */
// redirect output to client browser
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Chaiwit.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
?>
แนะนำความรู้นี้โดย พี่ปลาทู แห่ง http://www.select2web.com/
หาความรู้เพิ่มเติมจาก Documentation ที่ให้มาพร้อมกับ Class ที่ดาวโหลดมาได้เลยครับ
ดาวน์โหลด : http://phpexcel.codeplex.com/releases/view/26479 เวอร์ชั่นล่าสุด: 1.7.5
สมัครสมาชิก:
บทความ (Atom)