ออกรายงาน สร้างไฟล์ Excel ด้วย PHPExcel ใน Codeigniter
17 February 2016 By Ninenik Narkdeephpexcel codeigniter
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ phpexcel codeigniter
ไปที่
Copy
จากเนื้อหาตอนที่แล้ว เราได้รู้วิธีการอ่านข้อมูลจากไฟล์ Excel หรือ CSV เบื้องต้นอย่างง่าย
มาแล้ว เนื้อหาตอนนี้เราจะมาทำการดึงข้อมูลจากฐานข้อมูลเพื่อออกเป้นรายงาน หรือสร้างเป็น
ไฟล์ excel รองรับนามสกุล xls,xlsx
ปล. เนื้อหานี้ต่อจากตอนที่แล้ว
การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniter
http://www.ninenik.com/content.php?arti_id=689 via @ninenik
ในที่นี้จะขอยกตัวอย่างแบบง่าย สามารถนำไปประยุกต์เพิ่มเติม เช่นสร้างเป็นฟังก์ชั่นใน models
เพื่อเรียกใช้งานก็ได้ แต่เราจะใช้แบบธรรมดา คือสมมติมีปุ่มกด เพื่อคลิก ออกรายงาน
จากนั้นก็ตรวจสอบ และทำการออกรายงานสร้างไฟล์ excel และดาวน์โหลด
ตารางข้อมูลสำหรับทดสอบ ตาราง tbl_product
สร้างปุ่มกด ออกรายงาน
เมื่อคลิกปุ่มออกรายงาน ทำงานคำสั่งดังต่อไปนี้
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 |
สร้างปุ่มกด ออกรายงาน
<?php echo form_open('simpleexport',' name="form_export" '); ?> <input type="submit" name="btn_export" id="btn_export" value="ออกรายงาน"> <?php echo "</form>"; ?>
เมื่อคลิกปุ่มออกรายงาน ทำงานคำสั่งดังต่อไปนี้
<?php // เมื่อคลิกที่ปุ่ม btn_export เพื่อออกรายงาน if($this->input->post("btn_export")){ // โหลด excel library $this->load->library('excel'); // เรียนกใช้ PHPExcel $objPHPExcel = new PHPExcel(); // เราสามารถเรียกใช้เป็น $this->excel แทนก็ได้ // กำหนดค่าต่างๆ ของเอกสาร excel $objPHPExcel->getProperties()->setCreator("Ninenik.com") ->setLastModifiedBy("Ninenik.com") ->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"); // กำหนดชื่อให้กับ worksheet ที่ใช้งาน $objPHPExcel->getActiveSheet()->setTitle('Product Report'); // กำหนด worksheet ที่ต้องการให้เปิดมาแล้วแสดง ค่าจะเริ่มจาก 0 , 1 , 2 , ...... $objPHPExcel->setActiveSheetIndex(0); // การจัดรูปแบบของ cell $objPHPExcel->getDefaultStyle() ->getAlignment() ->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP) ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //HORIZONTAL_CENTER //VERTICAL_CENTER // จัดความกว้างของคอลัมน์ $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20); // กำหนดหัวข้อให้กับแถวแรก $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ลำดับ') ->setCellValue('B1', 'รหัสสินค้า') ->setCellValue('C1', 'ชื่อสินค้า') ->setCellValue('D1', 'ราคา'); // ดึงข้อมูลเริ่มเพิ่มแถวที่ 2 ของ excel $start_row=2; $sql = " SELECT * FROM tbl_product "; $query = $this->db->query($sql); $result = $query->result_array(); $i_num=0; if(count($result)>0){ foreach($result as $row){ $i_num++; // หากอยากจัดข้อมูลราคาให้ชิดขวา $objPHPExcel->getActiveSheet() ->getStyle('C'.$start_row) ->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); // หากอยากจัดให้รหัสสินค้ามีเลย 0 ด้านหน้า และแสดง 3 หลักเช่น 001 002 $objPHPExcel->getActiveSheet() ->getStyle('B'.$start_row) ->getNumberFormat() ->setFormatCode('000'); // เพิ่มข้อมูลลงแต่ละเซลล์ $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A'.$start_row, $i_num) ->setCellValue('B'.$start_row, $row['pro_id']) ->setCellValue('C'.$start_row, $row['pro_name']) ->setCellValue('D'.$start_row, $row['pro_price']); // เพิ่มแถวข้อมูล $start_row++; } // กำหนดรูปแบบของไฟล์ที่ต้องการเขียนว่าเป็นไฟล์ excel แบบไหน ในที่นี้เป้นนามสกุล xlsx ใช้คำว่า Excel2007 // แต่หากต้องการกำหนดเป็นไฟล์ xls ใช้กับโปรแกรม excel รุ่นเก่าๆ ได้ ให้กำหนดเป็น Excel5 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // Excel2007 (xlsx) หรือ Excel5 (xls) $filename='Product-'.date("dmYHi").'.xlsx'; // กำหนดชือ่ไฟล์ นามสกุล xls หรือ xlsx // บังคับให้ทำการดาวน์ดหลดไฟล์ header('Content-Type: application/vnd.ms-excel'); //mime type header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name header('Cache-Control: max-age=0'); //no cache ob_end_clean(); $objWriter->save('php://output'); // ดาวน์โหลดไฟล์รายงาน // หากต้องการบันทึกเป็นไฟล์ไว้ใน server ใช้คำสั่งนี้ $this->excel->save("/path/".$filename); // แล้วตัด header ดัานบนทั้ง 3 อันออก exit; } } ?>
ตัวอย่างรูปไฟล์ข้อมูลผลลัพธ์ที่ได้

เท่านี้เราก็สามารถดึงข้อมูลจากฐานข้อมูลมาแสดงเป้นรายงานข้อมูล Excel ได้แล้ว
สามารถนับไปประยุกต์เพิ่มเติมได้ตามต้องการ
เพิ่มเติมเนื้อหา ครั้งที่ 1 วันที่ 27-06-2017
การใส่ header footer ที่ใส่ในทุกๆหน้า ก็จะใช้คำสั่งประมาณนี้
$objPHPExcel->getActiveSheet(0)->getHeaderFooter()->setOddHeader('Header &R&F Page &P / &N'); $objPHPExcel->getActiveSheet(0)->getHeaderFooter()->setOddFooter('Footer &R&F Page &P / &N');
รายละเอียดเพิ่มเติมดูได้ที่ https://docs.typo3.org/typo3cms/extensions/phpexcel_library/1.7.4/manual.html#_Toc237519914
เนื้อหาที่เกี่ยวข้อง
-
15 Feb2016การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniter อ่าน 3,555
พิเศษ เฉพาะสมาชิก ก่อนอื่นให้เราไปดาวน์โหลด PHPExcel มาก่อน ดาวน์โหลดได้ที่
-
16 Feb2016การอ่านไฟล์ Excel หรือ CSV ไฟล์ด้วย PHPExcel ใน Codeigniter อ่าน 4,083
พิเศษ เฉพาะสมาชิก เนื้อหาตอนนี้ จะมาแสดงตัวอย่างการอ่านไฟล์ Excel หรือ CSV ไฟล์อย่างง่าย ด้
-
กำลังอ่านเนื้อหานี้อยู่17 Feb2016ออกรายงาน สร้างไฟล์ Excel ด้วย PHPExcel ใน Codeigniter อ่าน 6,499
พิเศษ เฉพาะสมาชิก จากเนื้อหาตอนที่แล้ว เราได้รู้วิธีการอ่านข้อมูลจากไฟล์ Excel หรือ CSV เบื้องต
Tags::
phpexcel
codeigniter
เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก
กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ
ยังไม่เป็นสมาชิก
สมาชิกล็อกอิน
สมาชิกล็อกอิน
หริอ สมัครสมาชิก และล็อกอิน ด้วย Facebook
อย่าลืมกด Like กด Share เป็นกำลังใจ ในการสร้างบทความใหม่ๆ น่ะครับ

URL สำหรับอ้างอิง
Top
Copy