ตัวอย่างโค้ดต่อไปนี้เป็นแนวทางการประยุกต์การใช้งาน PHPExcel ร่วม
กับข้อมูลในฐานข้อมูล เพื่อสร้างรายงานเป็นไฟล์ Excel เนื้อหาจะดัดแปลง
เล็กน้อยจากบทความก่อนหน้า
ออกรายงานเป็น excel ไฟล์ด้วย PHPExcel ตอนเริ่มใช้
https://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