PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

การอ่านไฟล์ Excel หรือ CSV ไฟล์ด้วย PHPExcel ใน Codeigniter

16 February 2016 By


เนื้อหาตอนนี้ จะมาแสดงตัวอย่างการอ่านไฟล์ Excel หรือ CSV ไฟล์อย่างง่าย
ด้วยรูปแบบไม่ซับซ้อน เพื่อต้องการดึงข้อมูลจากไฟล์ Excel นั้นมาใช้งาน
เช่น บันทึกลงฐานข้อมูล เป็นต้น
 
ปล. เนื้อหานี้ต่อจากตอนที่แล้ว
การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniter 
http://www.ninenik.com/content.php?arti_id=689 via @ninenik
 
ข้อมูลไฟล์ simple_excel.xlsx สำหรับทดสอบของเรา
 

 
 
รูปแบบที่จะทำคือ สร้างฟอร์มเพื่อให้ผู้ใช้เลือกไฟล์ เพื่ออัพโหลดเข้ามา แล้ว
ทำการอ่านไฟล์ที่อัพโหลดนั้นทันทีโดยไม่ต้องบันทึกไฟล์นั้นไว้ในระบบ
 
<?php
echo form_open_multipart('simplephpexcel',' name="form_simplephpexcel" ');
?>
  <input type="file" name="fileupload" id="fileupload">
  <input type="submit" name="btn_upload" id="btn_upload" value="Upload">
<?php
echo "</form>";
?>
 
เมื่อสร้างฟอร์มสำหรับอัพโหลดไฟล์แล้วต่อไป เราก็จะรับค่าเมื่อมีการทำการอัพโหลดไฟล์
เข้ามา แล้วทำการเรียกใช้งาน PHPExcel เพื่ออ่านข้อมูลจากไฟล์นั้นมาแสดง
 
<?php
// เมื่อส่งค่าปุ่มเพื่ออัพโหลดไฟล์เข้ามา คลิกที่ปุ่ม btn_upload
if($this->input->post("btn_upload")){
	$fileUpload=$_FILES['fileupload']['tmp_name'];  // ไฟล์ที่อัพโหลด
	// ตรวจสอบว่ามีการอัพโหลดไฟล์หรือไม่
	if(isset($fileUpload) && $fileUpload!=""){
		// โหลด excel library
		$this->load->library('excel');
		
		// อ่านไฟล์จาก path temp ชั่วคราวที่เราอัพโหลด
		$objPHPExcel = PHPExcel_IOFactory::load($fileUpload);
		
		// ดึงข้อมูลของแต่ละเซลในตารางมาไว้ใช้งานในรูปแบบตัวแปร array
		$cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
		
		// วนลูปแสดงข้อมูล
		foreach ($cell_collection as $cell) {
			// ค่าสำหรับดูว่าเป็นคอลัมน์ไหน เช่น A B C ....
			$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
			// คำสำหรับดูว่าเป็นแถวที่เท่าไหร่ เช่น 1 2 3 .....
			$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
			// ค่าของข้อมูลในเซลล์นั้นๆ เช่น A1 B1 C1 ....
			$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();			
			
			// เท่านี้เราก็สามารถแสดงข้อมูลจากการอ่านไฟล์ได้แล้ว และสามารถนำข้อมูลเหล่านี้
			// ทำการบันทักลงฐานข้อมูล หรือแสดงได้เลย
			echo $data_value."<br>";
			
		}

	}
}
?>
 
หากเราต้องการแสดงเฉพาะคอลัมน์หรือแถวที่ต้องการ ก็สามารถใช้ if กำหนดค่า โดยเช็คค่า $column
หรือ $row ตามต้องการ ตัวอย่างเข่น ใช้เฉพาะข้อมูลในคอลัมน์ B เท่านั้น
 
		// วนลูปแสดงข้อมูล
		foreach ($cell_collection as $cell) {
			// ค่าสำหรับดูว่าเป็นคอลัมน์ไหน เช่น A B C ....
			$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
			// คำสำหรับดูว่าเป็นแถวที่เท่าไหร่ เช่น 1 2 3 .....
			$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
			// ค่าของข้อมูลในเซลล์นั้นๆ เช่น A1 B1 C1 ....
			$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();			
			
			// เท่านี้เราก็สามารถแสดงข้อมูลจากการอ่านไฟล์ได้แล้ว และสามารถนำข้อมูลเหล่านี้
			// ทำการบันทักลงฐานข้อมูล หรือแสดงได้เลย
			if($column=="B"){
				echo $data_value."<br>";
			}
			
		}
 
 
หรือดึงข้อมูลตั้งแต่แถวที่ 5 เป้นต้นไป เช่น
 
		// วนลูปแสดงข้อมูล
		foreach ($cell_collection as $cell) {
			// ค่าสำหรับดูว่าเป็นคอลัมน์ไหน เช่น A B C ....
			$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
			// คำสำหรับดูว่าเป็นแถวที่เท่าไหร่ เช่น 1 2 3 .....
			$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
			// ค่าของข้อมูลในเซลล์นั้นๆ เช่น A1 B1 C1 ....
			$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();			
			
			// เท่านี้เราก็สามารถแสดงข้อมูลจากการอ่านไฟล์ได้แล้ว และสามารถนำข้อมูลเหล่านี้
			// ทำการบันทักลงฐานข้อมูล หรือแสดงได้เลย
			if($row>5){
				echo $data_value."<br>";
			}
			
		}
 
เท่านี้เราก็สามารถดึงข้อมูลจากไฟล์ excel หรือไฟล์ csv ที่อัพโหลดได้แล้ว
สามารถนำไปประยุกต์เพิ่มเติมได้ตามต้องการ



เนื้อหาที่เกี่ยวข้อง



Tags:: phpexcel codeigniter

เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





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