ตัวอย่างโค้ดต่อไปนี้เป็นแนวทางการประยุกต์การใช้งาน 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
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