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

รูปแบบที่จะทำคือ สร้างฟอร์มเพื่อให้ผู้ใช้เลือกไฟล์ เพื่ออัพโหลดเข้ามา แล้ว
ทำการอ่านไฟล์ที่อัพโหลดนั้นทันทีโดยไม่ต้องบันทึกไฟล์นั้นไว้ในระบบ
1 2 3 4 5 6 7 8 | <?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 เพื่ออ่านข้อมูลจากไฟล์นั้นมาแสดง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?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 เท่านั้น
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // วนลูปแสดงข้อมูล 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 เป้นต้นไป เช่น
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // วนลูปแสดงข้อมูล 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 ที่อัพโหลดได้แล้ว
สามารถนำไปประยุกต์เพิ่มเติมได้ตามต้องการ