แนวทางดึงข้อมูลจาก database ออกรายงาน ด้วย PHPExcel

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
phpexcel database ฐานข้อมูล รายงาน

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ phpexcel database ฐานข้อมูล รายงาน

ดูแล้ว 14,266 ครั้ง


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

tbl_customer
tbl_order
tbl_product
cus_id cus_name
1 Cus A
2 Cus B
3 Cus C
4 Cus D
5 Cus E
order_id cus_id pro_id
1 1 3
2 2 3
3 1 4
4 3 5
5 1 5
6 3 5
7 5 2
8 5 4
9 3 2
10 5 5
pro_id pro_name pro_price
1 Pro 111 100
2 Pro 222 200
3 Pro 333 100
4 Pro 444 250
5 Pro 555 400
 
 
ชื่อไฟล์โค้ดตัวอย่าง sample_excel_database.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
<?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
 
// เชื่อมต่อฐานข้อมูล 
$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="excel_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");
 
// การจัดรูปแบบของ cell
$objPHPExcel->getDefaultStyle()
                        ->getAlignment()
                        ->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP)
                        ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                        //HORIZONTAL_CENTER //VERTICAL_CENTER
 
 
// การเพิ่มข้อมูล สร้างหัวข้อมูล
echo date('H:i:s') , " Add some data" , EOL;
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'cus_id')
            ->setCellValue('B1', 'cus_name')
            ->setCellValue('C1', 'order_id')
            ->setCellValue('D1', 'pro_id')
            ->setCellValue('E1', 'pro_name');
 
// ดึงข้อมูลจากฐานข้อมูลมาแสดงเริ่มนับตั้งแต่แถวที่สองไป
$start_row=2;
$q="
SELECT
a.cus_id,a.cus_name,b.order_id,b.pro_id,c.pro_name
FROM tbl_customer a
LEFT JOIN (
    tbl_order b,tbl_product c
)
ON (
    a.cus_id=b.cus_id
    AND b.pro_id=c.pro_id
)
";
$qr=mysql_query($q);
while($rs=mysql_fetch_array($qr)){
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A'.$start_row, $rs['cus_id'])
            ->setCellValue('B'.$start_row, $rs['cus_name'])
            ->setCellValue('C'.$start_row, $rs['order_id'])
            ->setCellValue('D'.$start_row, $rs['pro_id'])
            ->setCellValue('E'.$start_row, $rs['pro_name']);
    $start_row++;
}
  
 
// กำหนดชื่อให้กับ worksheet ที่ใช้งาน
echo date('H:i:s') , " Rename worksheet" , EOL;
$objPHPExcel->getActiveSheet()->setTitle('Simple');
 
// กำหนด worksheet ที่ต้องการให้เปิดมาแล้วแสดง ค่าจะเริ่มจาก 0 , 1 , 2 , ......
$objPHPExcel->setActiveSheetIndex(0);
 
// ชื่อไฟล์
$saveFileName="excel_by_phpexcel_database";
 
// บันทึกเป็น Excel 2007 file
echo date('H:i:s') , " Write to Excel2007 format" , EOL;
$callStartTime = microtime(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$saveFileNameFull=$saveFileName.".xlsx";
$pathSaveFile1=$placeFilesSave.$saveFileNameFull;
$objWriter->save($pathSaveFile1);
 
 
 
// บันทึกเป็น Excel 95 file
echo date('H:i:s') , " Write to Excel5 format" , EOL;
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$saveFileNameFull=$saveFileName.".xls";
$pathSaveFile2=$placeFilesSave.$saveFileNameFull;
$objWriter->save($pathSaveFile2);
 
 
 
// แสดงการเขียนไฟล์เรียกร้อยแล้ว และมีลิ้งค์ให้ดาวโหลด
echo date('H:i:s') , " Done writing files" , EOL;
echo 'Files have been created in ' , $placeFilesSave , EOL;
echo "<a href='".$pathSaveFile1."' target='_blank'>Download Excel2007 format</a>",EOL;
echo "<a href='".$pathSaveFile2."' target='_blank'>Download Excel5 format</a>",EOL;
?>
 
 
ทดสอบรันไฟล์ เราจะได้ไฟล์ excel ในโฟลเดอร์ excel_files
 


 
 
ตัวอย่างไฟล์ทีได้
 



 
ตัวอย่างไฟล์ run บน server
 


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







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






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

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

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

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



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




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











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