ออกรายงาน สร้างไฟล์ Excel ด้วย PHPExcel ใน Codeigniter
เขียนเมื่อ 8 ปีก่อน โดย Ninenik Narkdeecodeigniter 3 codeigniter phpexcel
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ codeigniter 3 codeigniter phpexcel
ดูแล้ว 15,642 ครั้ง
ไปที่
Copy
จากเนื้อหาตอนที่แล้ว เราได้รู้วิธีการอ่านข้อมูลจากไฟล์ Excel หรือ CSV เบื้องต้นอย่างง่าย
มาแล้ว เนื้อหาตอนนี้เราจะมาทำการดึงข้อมูลจากฐานข้อมูลเพื่อออกเป้นรายงาน หรือสร้างเป็น
ไฟล์ excel รองรับนามสกุล xls,xlsx
ปล. เนื้อหานี้ต่อจากตอนที่แล้ว
การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniter
https://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
กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ
เนื้อหาที่เกี่ยวข้อง
-
15 Feb2016การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniter อ่าน 9,929
ก่อนอื่นให้เราไปดาวน์โหลด PHPExcel มาก่อน ดาวน์โหลดได้ที่
-
16 Feb2016การอ่านไฟล์ Excel หรือ CSV ไฟล์ด้วย PHPExcel ใน Codeigniter อ่าน 9,656
เนื้อหาตอนนี้ จะมาแสดงตัวอย่างการอ่านไฟล์ Excel หรือ CSV ไฟล์อย่างง่าย ด้
-
กำลังอ่านเนื้อหานี้อยู่17 Feb2016ออกรายงาน สร้างไฟล์ Excel ด้วย PHPExcel ใน Codeigniter อ่าน 15,642
จากเนื้อหาตอนที่แล้ว เราได้รู้วิธีการอ่านข้อมูลจากไฟล์ Excel หรือ CSV เบื้องต
URL สำหรับอ้างอิง
Top
Copy
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ