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