เห็นความสามารถของ PHPExcel แล้วคิดว่าน่าจะมีประโยชน์
เลยเอามาแนะนำกัน โหลดได้ที่
ปัจจุบันเปลี่ยนไปใข้ที่ (อัพเดท 09/03/2560)
https://github.com/PHPOffice/PHPExcel
https://github.com/PHPOffice/PHPExcel
แนะนำให้โหลดเป็นเวอร์ชั่น PHPExcel 1.8.0
หลังจากดาวน์โหลดแล้ว เราจะได้ไฟล์ PHPExcel_1.8.0_doc.zip
แตกไฟล์ แล้ว copy โฟลเดอร์ Classes ไว้ใช้งาน

มาทดสอบสร้างไฟล์ excel ด้วยโค้ดอย่างง่าย

โครงสร้างตัวอย่างจะมีตามนี้
- Classes
- excel_files โฟลเดอร์สำหรับ บันทึกไฟล์ excel
- sample_excel1.php ไฟล์ทดสอบโค้ดอย่างง่าย
* ใครที่ต้องการดูตัวอย่างทั้งหมด สามารถดูได้ในโฟลเดอร์ example
ใน PHPExcel_1.8.0_doc.zip ที่แตกไฟล์แล้วได้เลย
โค้ดไฟล์ sample_excel1.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 | <?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","test") 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' , 'Top' ) ->setCellValue( 'B1' , 'Sub' ); // เราจะทดสอบเพิ่มข้อมูลในตาราง excel อย่างง่าย $start_row =2; for ( $i =1; $i <=10; $i ++){ $objPHPExcel ->setActiveSheetIndex(0) ->setCellValue( 'A' . $start_row , $i ) ->setCellValue( 'B' . $start_row , $i *2); $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_phpexcel1" ; // บันทึกเป็น 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; ?> |
ทดสอบ run ไฟล์ จะได้ตามนี้

เราจะได้ไฟล์ excel ทั้งสองเวอร์ชั่น อยู่ในโฟลเดอร์ excel_files ตามรูป

ลองเปิดไฟล์ excel จะได้ตามนี้

ตัวอย่างไฟล์ run บน server
ข้อควรระวัง:: เนื่องจาก PHPExcel จะมีการเรียกใช้งานไฟล์ php_zip.dll ซึ่งเป็น extension
เราต้องทำการเปิดใช้งาน ส่วนเสริมนี้ก่อน
การแจ้ง error กรณียังไม่เปิดใช้งาน extension = php_zip.dll
Fatal error: Class 'ZipArchive' not found in ......
การเปิดใช้งาน ให้เปิดไฟล์ php.ini
โดยไปที่ Start > Run > แล้วพิมพ์ php.ini แล้วกด Enter
windows 7 , 8 พิมพ์ได้ที่ช่องค้นหา แล้วกด Enter
จากนั้นแก้เป็นดังนี้

จากนั้นให้ restart apache