เห็นความสามารถของ 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 (มีดัดแปลงและประยุกต์ให้ใช้งานง่ายขึ้นเล็กน้อย)
<?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","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