นอกจาก PHPExcel จะสามารถออกรายงาน หรือสร้างไฟล์ excel ได้แล้ว
ก็ยังมีคุณสมบัติสามารถใช้งานร่วมกับ pdf library อย่างเช่น mPDF ที่ทำให้
สามารถเปลงไฟล์จากรูปแบบ excel เป็น ไฟล์ pdf ได้อีกด้วย
รูปแบบจะคล้ายกับเนื้อหาก่อนหน้า
ออกรายงานเป็น excel ไฟล์ด้วย PHPExcel ตอนเริ่มใช้
https://www.ninenik.com/content.php?arti_id=633 via @ninenik
โดยจะต่อยอดเพิ่มส่วนของ mPDF เข้ามาพร้อมกับการเรียกใช้งาน
ก่อนอื่นให้ดาวน์โหลด library mPDF จากลิ้งค์ด้านล่าง ซึ่งได้เพิ่ม fonts
ภาษาไทยชื่อ thsarabunnew เข้าไปแล้ว เป็น mPDF เวอร์ชั่น 5.4
หลังจากโหลดเสร็จให้แตกไฟล์ แล้ว copy โฟลเดอร์ libraries ไว้ในตำแหน่งตามรูป
โครงสร้างตัวอย่างจะมีตามนี้
- Classes
- libraries โฟลเดอร์มี mPDF อยู่ด้านใน ที่โหลดจากลิ้งค์ด้านบน
- excel_files โฟลเดอร์สำหรับ บันทึกไฟล์ excel (ของบทความก่อน)
- sample_excel1.php ไฟล์ทดสอบอย่างง่ายสร้างไฟล์ excel (ของบทความก่อน)
- pdf_files โฟลเดอร์สำหรับ บันทึกไฟล์ pdf
- sample_genpdf.php ไฟล์ทดสอบอย่างง่าย
โค้ดไฟล์ sample_genpdf.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 // กำหนด Rendering library pdf ที่ต้องการ ในที่นี้ใช้ mpdf รองรับภาษาไทย เวอร์ชั่น 5.4 $rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; $rendererLibraryPath = "libraries/MPDF54"; // เชื่อมต่อฐานข้อมูล //$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="pdf_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"); // กำหนด รูปภาพ style ที่จะใช้ $styleArray = array( 'font' => array( // 'bold' => true, // 'color' => array('rgb' => 'FF0000'), 'size' => 14, 'name' => 'thsarabunnew' // ภาษาไทย )); // การจัดรูปแบบของ cell $objPHPExcel->getDefaultStyle() ->applyFromArray($styleArray) ->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', 'หัวข้อ') ->setCellValue('B1', 'หัวข้อย่อย'); // เราจะทดสอบเพิ่มข้อมูลในตาราง 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="pdfl_by_phpexcel1"; // ตรวจสอบการตั้งค่า Rendering library pdf แล้วหรือไม่ if(!PHPExcel_Settings::setPdfRenderer( $rendererName, $rendererLibraryPath )) { die( 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . '<br />' . 'at the top of this script as appropriate for your directory structure' ); } // แสดงการเขียนไฟล์เรียกร้อยแล้ว และมีลิ้งค์ให้ดาวโหลด $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); $saveFileNameFull=$saveFileName.".pdf"; $pathSaveFile1=$placeFilesSave.$saveFileNameFull; $objWriter->save($pathSaveFile1); echo date('H:i:s') , " Done writing files" , EOL; echo 'Files have been created in ' , $placeFilesSave , EOL; echo "<a href='".$pathSaveFile1."' target='_blank'>Download PDF</a>",EOL; ?>
ทดสอบ run ไฟล์ จะได้ตามนี้
เราจะได้ไฟล์ pdf อยู่ในโฟลเดอร์ pdf_files ตามรูป
ลองเปิดไฟล์ pdf จะได้ตามนี้
ตัวอย่างไฟล์ run บน server
หมายเหตุ:: กรณีบันทึกไฟล์บน server เราต้องกำหนด permision
ให้กับโฟลเดอร์ pdf_files เป็น 777 เพื่อให้สามารถเขียนไฟล์ได้