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

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
codeigniter 3 codeigniter phpexcel

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ codeigniter 3 codeigniter phpexcel

ดูแล้ว 10,406 ครั้ง


เนื้อหาตอนนี้ จะมาแสดงตัวอย่างการอ่านไฟล์ Excel หรือ CSV ไฟล์อย่างง่าย
ด้วยรูปแบบไม่ซับซ้อน เพื่อต้องการดึงข้อมูลจากไฟล์ Excel นั้นมาใช้งาน
เช่น บันทึกลงฐานข้อมูล เป็นต้น
 
ปล. เนื้อหานี้ต่อจากตอนที่แล้ว
การติดตั้ง PHPExcel ให้สามารถใช้งานกับ Codeigniter 
 
ข้อมูลไฟล์ 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 ที่อัพโหลดได้แล้ว
สามารถนำไปประยุกต์เพิ่มเติมได้ตามต้องการ


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ



อ่านต่อที่บทความ









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









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











เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ