ใช้ PHPExcel แทรกรูปตราครุฑ และการจัดรูปแบบในหนังสือราชการ เบื้องต้น

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
หนังสือราชการ mpdf ภาษาไทย phpexcel

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ หนังสือราชการ mpdf ภาษาไทย phpexcel

ดูแล้ว 10,864 ครั้ง


เนื้อหาต่อไปนี้เป็นตัวอย่างโค้ดการแทรกรูปตราครุฑ ในหนังสื่อราชการ
และการจัดรูปแบบออกสาร เบื้องต้น เป็นแนวทางในการประยุกต์เพิ่มเติม
 
การจัดรูปแบบของข้อความในตารางรูปแบบ excel จะทำให้เราสามารถกำหนด
ตำแหน่ง การจัดวางต่างๆ ได้ง่ายขึ้น
 
บทความนี้ประยุกต์จากเนื้อหา
ใช้งาน PHPExcel ร่วมกับ mPDF ออกรายงานเป็น pdf รองรับภาษาไทย 
 
ดังนั้นให้ดูตามขึ้นตอนของบทความที่แล้วก่อน 

รูปตราครุฑตัวอย่างสำหรับใช้ทดสอบ



 
 
คำอธิบายแสดงในโค้ด (อาจจะไม่ได้อธิบายทั้งหมด แต่น่าจะเดากันได้)
ไค้ดไฟล์ตัวอย่าง simple_gen_gov.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<?php
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Asia/Bangkok');
 
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); // ส่วนนี้ไม่มีอะไรกำหนดค่าไว้ใช้ในการ echo
require_once 'Classes/PHPExcel.php'// เรียกใช้งาน class
 
//     กำหนด Rendering library pdf ที่ต้องการ ในที่นี้ใช้ mpdf รองรับภาษาไทย เวอร์ชั่น 5.4
$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; 
$rendererLibraryPath = "libraries/MPDF54"// tcpdf MPDF54
 
// ฟังก์ชั่นสำหรับแปลงค่าการกำหนดขนาดของ cell
function mmToChar($mm){  // แปลงจาก มิลลิเมตร เป็น char
 return  $mm*0.4724409448819; 
}
function mmToPoint($mm){ // แปลงจาก มิลลิเมตร เป็น point
 return  $mm*2.834645669291; 
}
 
// เชื่อมต่อฐานข้อมูล 
/*$link=mysql_connect("localhost","root","") or die("error".mysql_error()); 
mysql_select_db("test",$link); 
mysql_query("set character set utf8");  */
 
// โฟลเดอร์เก็บไฟล์ กรณีใช้ใน server ให้กำหนด permission เป็น 777
$placeFilesSave="pdf_files/";
 
// สร้าง PHPExcel object
echo date('H:i:s') , " Create new PHPExcel object" , EOL;
$objPHPExcel = new PHPExcel();
 
// กำหนดค่าต่างๆ ของเอกสาร excel
echo date('H:i:s') , " Set document properties" , EOL;
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
                             ->setLastModifiedBy("Maarten Balliauw")
                             ->setTitle("PHPExcel Test Document")
                             ->setSubject("PHPExcel Test Document")
                             ->setDescription("Test document for PHPExcel, generated using PHP classes.")
                             ->setKeywords("office PHPExcel php")
                             ->setCategory("Test result file");
 
// กำหนด รูปภาพ style ที่จะใช้
$styleArray = array(
    'font'  => array(
//        'bold'  => true,
//        'color' => array('rgb' => 'FF0000'),
        'size'  => '16',
        'name'  => 'thsarabunnew'  // ภาษาไทย
    ));
$styleBold = array(
    'alignment' => array(
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
        'vertical' => PHPExcel_Style_Alignment::VERTICAL_BOTTOM,
    ),   
    'font'  => array(
//        'bold'  => true,
//        'color' => array('rgb' => 'FF0000'),
        'size'  => '16',
        'name'  => 'thsarabunnew'  // ภาษาไทย
    ));
$styleBoldR = array(
    'alignment' => array(
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
        'vertical' => PHPExcel_Style_Alignment::VERTICAL_BOTTOM,
    ),   
    'font'  => array(
//        'bold'  => true,
//        'color' => array('rgb' => 'FF0000'),
        'size'  => '16',
        'name'  => 'thsarabunnew'  // ภาษาไทย
    ));
 
// กำหนดให้แสดงหรือไม่แสดงเส้นขอบตาราง false ไม่แสดง true แสดง
$objPHPExcel->getActiveSheet()->setShowGridlines(false); 
 
// จัดรูปแบบของ page
$objPHPExcel->getActiveSheet()->getPageSetup()
    ->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);
    // ORIENTATION_LANDSCAPE  , ORIENTATION_PORTRAIT
$objPHPExcel->getActiveSheet()->getPageSetup()
    ->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
     
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToPage(true);
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1);
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0);
     
// การจัดรูปแบบของ cell
$objPHPExcel->getDefaultStyle()
                        ->applyFromArray($styleArray)
                        ->getAlignment()
                        ->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP)
                        ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                        //HORIZONTAL_CENTER //VERTICAL_CENTER
 
// เพิ่มข้อมูลหรือรูปแบบตาราง
$objPHPExcel->setActiveSheetIndex(0) 
    ->setCellValue('A1', ''
    ->setCellValue('A3', ''
    ->setCellValue('B1', ''
    ->setCellValue('C1', ''
    ->setCellValue('D1', '')     
    ->setCellValue('E1', ''
    ->setCellValue('F1', ''
    ->setCellValue('G1', ''
    ->setCellValue('H1', ''
    ->setCellValue('I1', ''); 
   
     
// แทรกรูป
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Garuda');
$objDrawing->setDescription('Garuda');
$objDrawing->setPath('Garuda_3.jpg');
$objDrawing->setHeight(120); // ความสูงรูป pixels
$objDrawing->setCoordinates('E2'); // ตำแหน่งที่ต้องการแทรกรูป
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
 
// ส่วนของการกำหนดค่าความกว้างความสูงของ cell
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(mmToChar(49));
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(mmToPoint(9));
$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(mmToPoint(28));
 
// ส่วนของการกำหนดค่าแต่ละช่องรายการ
$objPHPExcel->setActiveSheetIndex(0) 
    ->setCellValue('B2', 'ที่ กษ ๐๔.../...........')
    ->getStyle('B2')->applyFromArray($styleBold);
$objPHPExcel->setActiveSheetIndex(0) 
    ->setCellValue('F2', 'คณะกรรมการ…..............')
    ->getStyle('F2')
    ->applyFromArray($styleBoldR)
    ->getAlignment()->setIndent(mmToChar(16));
 
// ส่วนของการรวม cell
$objPHPExcel->getActiveSheet()
    ->mergeCells('A1:I1')
    ->mergeCells('E2:E3')
    ->mergeCells('F2:I2')
    ->mergeCells('B2:D2');
     
     
// กำหนดชื่อให้กับ worksheet ที่ใช้งาน
echo date('H:i:s') , " Rename worksheet" , EOL;
$objPHPExcel->getActiveSheet()->setTitle('Simple');
 
// กำหนด worksheet ที่ต้องการให้เปิดมาแล้วแสดง ค่าจะเริ่มจาก 0 , 1 , 2 , ......
$objPHPExcel->setActiveSheetIndex(0);
 
// ชื่อไฟล์
$saveFileName="gov_gen";
 
// ตรวจสอบการตั้งค่า Rendering library pdf แล้วหรือไม่
if(!PHPExcel_Settings::setPdfRenderer( 
        $rendererName
        $rendererLibraryPath 
    )) { 
    die
        'NOTICE: Please set the $rendererName and $rendererLibraryPath values'
        '<br />'
        'at the top of this script as appropriate for your directory structure' 
    ); 
   
     
// แสดงการเขียนไฟล์เรียกร้อยแล้ว และมีลิ้งค์ให้ดาวโหลด
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); 
$saveFileNameFull=$saveFileName.".pdf";
$pathSaveFile1=$placeFilesSave.$saveFileNameFull;
$objWriter->save($pathSaveFile1);
echo date('H:i:s') , " Done writing files" , EOL;
echo 'Files have been created in ' , $placeFilesSave , EOL;
echo "<a href='".$pathSaveFile1."' target='_blank'>Download PDF</a>",EOL;
?>
 
ตัวอย่าง แสดงแบบมีขอบตาราง
 
 
ตัวอย่าง ไม่แสดงขอบตาราง
 


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ







เนื้อหาที่เกี่ยวข้อง






เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ

ยังไม่เป็นสมาชิก

สมาชิกล็อกอิน



( หรือ เข้าใช้งานผ่าน Social Login )




URL สำหรับอ้างอิง











เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ