PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

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

29 May 2015 By


ตัวอย่างโค้ดต่อไปนี้เป็นแนวทางการประยุกต์การใช้งาน PHPExcel ร่วม
กับข้อมูลในฐานข้อมูล เพื่อสร้างรายงานเป็นไฟล์ Excel เนื้อหาจะดัดแปลง
เล็กน้อยจากบทความก่อนหน้า
 
ออกรายงานเป็น excel ไฟล์ด้วย PHPExcel ตอนเริ่มใช้ 
http://www.ninenik.com/content.php?arti_id=633 via @ninenik
 
แต่ในส่วนนี้จะพูดถึงการติดต่อกับฐานข้อมูล
 
ตารางฐานข้อมูลประกอบ

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
 
<?php
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Asia/Bangkok');
// http://php.net/manual/en/timezones.php

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
 
http://www.ninenik.com/demo/PHPExcel/sample_excel_database.php



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



Tags:: phpexcel ฐานข้อมูล รายงาน database

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

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





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