แนวทางดึงข้อมูลจาก database ออกรายงาน ด้วย PHPExcel
เขียนเมื่อ 8 ปีก่อน โดย Ninenik Narkdeedatabase รายงาน phpexcel ฐานข้อมูล
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ database รายงาน phpexcel ฐานข้อมูล
ดูแล้ว 13,605 ครั้ง
ไปที่
Copy
ตัวอย่างโค้ดต่อไปนี้เป็นแนวทางการประยุกต์การใช้งาน 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
กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ
เนื้อหาที่เกี่ยวข้อง
-
27 May2015ออกรายงานเป็น excel ไฟล์ด้วย PHPExcel ตอนเริ่มใช้ อ่าน 18,430
พิเศษ เฉพาะสมาชิก เห็นความสามารถของ PHPExcel แล้วคิดว่าน่าจะมีประโยชน์ เลยเอามาแนะนำกัน โหล
เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก
กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ
ยังไม่เป็นสมาชิก
สมาชิกล็อกอิน
สมาชิกล็อกอิน
( หรือ เข้าใช้งานผ่าน Social Login )
URL สำหรับอ้างอิง
Top
Copy
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ