สอบถามว่า ต้องเขียน Code อย่างไร จึงจะสร้าง Input Form เพื่อกำหนดช่อง Excel ที่จะดึงข้อมูล ตามตัวอย่างใน http:/

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามว่า ต้องเขียน Code อย่างไร จึงจะสร้าง Input Form เพื่อกำหนดช่อง Excel ที่จะดึงข้อมูล ตามตัวอย่างใน http:/

สอบถามว่า ต้องเขียน Code อย่างไร จึงจะสร้าง Input Form เพื่อกำหนดช่อง Excel ที่จะดึงข้อมูล ตามตัวอย่างใน http:/
สอบถามว่า ต้องเขียน Code อย่างไร จึงจะสร้าง Input Form แบบ <input type="text" id="selectcell1" name="selectcell1"> เพื่อกำหนดช่อง Excel ที่ต้องการจะดึงข้อมูล ในส่วน $("#fname").val(data.ช่อง Excel ที่ต้องการจะเลือก จาก <input type="text" id="selectcell1" name="selectcell1"> ครับ); ที่อ่านค่าด้วย PHPExcel ตามตัวอย่างใน link http://niik.in/que_3010_6713 ได้ครับ

ชุดไฟล์ + Code ทั้งหมด ซึ่งแนวความคิดเรื่อง สร้าง Input Form เพื่อกำหนดช่อง Excel ที่จะดึงข้อมูล อยู่ที่ comment แนวความคิดที่ต้องการให้ กรอกช่อง Excel ที่ต้องการจะเลือกในส่วนของ **val(data.ช่อง Excel ที่ต้องการจะเลือก)** ได้ครับ ครับ
 
1. excelimport.php
 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"
    <title>Document</title>
    <style>
    h2,h4 {display: inline;}
    </style>
</head>
   
<body>
 
<form action="" method="post" enctype="multipart/form-data" name="myform1" id="myform1">
 
    <details>
        <summary>กรอกช่อง Excel ที่ต้องการจะเลือกในส่วนของ <b>**val(data.ช่อง Excel ที่ต้องการจะเลือก)**</b></summary>
        <br><h4 for="selectcell1">ช่อง Excel ที่ต้องการจะเลือกในส่วน First name : </h4><input type="text" id="selectcell1" name="selectcell1"><br><br>
        <h4 for="selectcell2">ช่อง Excel ที่ต้องการจะเลือกในส่วน Last name : </h4><input type="text" id="selectcell2" name="selectcell2">
    </details><br>
 
    <h2 for="myfile1">Select files : </h2><input type="file" name="excelFile" id="excelFile" /><br><br>
    <h2 for="fname">First name : </h2><input type="text" id="fname" name="fname"><br><br>
    <h2 for="lname">Last name : </h2><input type="text" id="lname" name="lname"><br><br>
  <input type="submit" name="btnSubmit" id="btnSubmit" value="Submit" />
</form>
 
<script type="text/javascript">
$(function(){
       
       
    // เมื่อฟอร์มการเรียกใช้ evnet submit ข้อมูล       
    $("#excelFile").on("change",function(e){
        e.preventDefault(); // ปิดการใช้งาน submit ปกติ เพื่อใช้งานผ่าน ajax
           
        // เตรียมข้อมูล form สำหรับส่งด้วย  FormData Object
       var formData = new FormData($("#myform1")[0]);
   
        // ส่งค่าแบบ POST ไปยังไฟล์ read_excel.php รูปแบบ ajax แบบเต็ม
        $.ajax({
            url: 'read_excel.php',
            type: 'POST',
            data: formData,
            /*async: false,*/
            cache: false,
            contentType: false,
            processData: false
        }).done(function(data){
                console.log(data);  // ทดสอบแสดงค่า  ดูผ่านหน้า console
/*              การใช้งาน console log เพื่อ debug javascript ใน chrome firefox และ ie
                https://www.ninenik.com/content.php?arti_id=692 via @ninenik         */
                $("#fname").val(data.A2);
                $("#lname").val(data.B2);
                 
                /* แนวความคิดที่ต้องการให้ กรอกช่อง Excel ที่ต้องการจะเลือกในส่วนของ **val(data.ช่อง Excel ที่ต้องการจะเลือก)** ได้ครับ
                $("#fname").val(data.ช่อง Excel ที่ต้องการจะเลือก จาก <input type="text" id="selectcell1" name="selectcell1"> ครับ);
                $("#lname").val(data.ช่อง Excel ที่ต้องการจะเลือก จาก <input type="text" id="selectcell2" name="selectcell2"> ครับ);
                */
        });    
   
    });
       
       
});
</script>
</body>
</html>

2. read_excel.php

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
header("Content-type:application/json; charset=UTF-8");   
header("Cache-Control: no-store, no-cache, must-revalidate");        
header("Cache-Control: post-check=0, pre-check=0", false);
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Asia/Bangkok');
require_once("PHPExcel/Classes/PHPExcel.php");
?>
<?php
if(isset($_FILES['excelFile']['name']) && $_FILES['excelFile']['name']!=""){
    $tmpFile = $_FILES['excelFile']['tmp_name']; 
    $fileName = $_FILES['excelFile']['name'];  // เก็บชื่อไฟล์
    $_fileup = $_FILES['excelFile'];
    $info = pathinfo($fileName);
    $allow_file = array("csv","xls","xlsx");
/*  print_r($info);         // ข้อมูลไฟล์  
    print_r($_fileup);*/
    if($fileName!="" && in_array($info['extension'],$allow_file)){
        // อ่านไฟล์จาก path temp ชั่วคราวที่เราอัพโหลด
        $objPHPExcel = PHPExcel_IOFactory::load($tmpFile);     
            
            
        // ดึงข้อมูลของแต่ละเซลในตารางมาไว้ใช้งานในรูปแบบตัวแปร array
        $cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
             
        // วนลูปแสดงข้อมูล
        $v=1;
        $json_data = array();
        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();         
                
            // เท่านี้เราก็สามารถแสดงข้อมูลจากการอ่านไฟล์ได้แล้ว และสามารถนำข้อมูลเหล่านี้
            // ทำการบันทักลงฐานข้อมูล หรือแสดงได้เลย
            $json_data["$column$row"] = $data_value;
//            echo $v." ----  ".$data_value."<br>";
             $v++;
        }      
         // แปลง array เป็นรูปแบบ json string 
        if(isset($json_data)){ 
            $json= json_encode($json_data);   
            if(isset($_GET['callback']) && $_GET['callback']!=""){   
            echo $_GET['callback']."(".$json.");";       
            }else{   
            echo $json;   
            }   
        }       
    }
}
?>
 
4. PHPExcel ซึ่งโหลดจากเว็บ https://github.com/PHPOffice/PHPExcel/ ซึ่งมีโครงสร้างของไฟล์ทั้งหมด ดังนี้ครับ
 
 
Screenshot ครับ



Sumate Mephokkij 13-03-2020 10:13:16

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
สมมติชื่อ object ที่เราต้องการคือ data.A2
ให้ทำการหาวิธีต่อ String ให้ได้เป็นค่าที่ต้องการ นั่นคือ "data.A2"
จากนั้นใช้คำสั่ง eval() โดยจะมองข้อความเป็นเหมือน รูปแบบคำสั่ง แทน
ดังนั้น ถ้าอ้างอิงค่า A2 จาก selectcell1 ก็จะเป็น $("#selectcell1").val()
"data.A2" ก็จะแทนได้วย "data." + $("#selectcell1").val()
 
1
2
3
4
// จากเดิม
$("#fname").val(data.A2);
// ก็จะปรับเป็น
$("#fname").val(eval("data." + $("#selectcell1").val()));


ninenik 13-03-2020
 ความคิดเห็นที่ 2
ขอบคุณครับ สำหรับคำตอบ Code ใช้งานได้แล้ว ซึ่งปรับปรุงเป็นฉบับของตัวเอง ได้ดังนี้ครับ
 
1. excelimport.php

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"
    <title>Document</title>
    <style>
    h2,h4 {display: inline;}
    </style>
</head>
   
<body>
 
<form action="" method="post" enctype="multipart/form-data" name="myform1" id="myform1">
 
    <details>
        <summary>กรอกช่อง Excel ที่ต้องการจะเลือก (กรอกเป็นตัวพิมพ์ใหญ่เท่านั้น เช่น A1)<br>(หากไม่มีช่อง Excel ที่ต้องการจะเลือก ให้กรอกเป็นตัวอักษรอะไรก็ได้ 1 ตัว)</b></summary>
        <br><h4 for="selectcell1">ช่อง Excel ที่ต้องการจะเลือกในส่วน First name : </h4><input type="text" id="selectcell1" name="selectcell1"><br><br>
        <h4 for="selectcell2">ช่อง Excel ที่ต้องการจะเลือกในส่วน Last name : </h4><input type="text" id="selectcell2" name="selectcell2">
    </details><br>
 
    <h2 for="myfile1">Select files : </h2><input type="file" name="excelFile" id="excelFile" /><br><br>
    <h2 for="fname">First name : </h2><input type="text" id="fname" name="fname"><br><br>
    <h2 for="lname">Last name : </h2><input type="text" id="lname" name="lname"><br><br>
  <input type="submit" name="btnSubmit" id="btnSubmit" value="Submit" />
</form>
 
<script type="text/javascript">
$(function(){
       
       
    // เมื่อฟอร์มการเรียกใช้ evnet submit ข้อมูล       
    $("#excelFile").on("change",function(e){
        e.preventDefault(); // ปิดการใช้งาน submit ปกติ เพื่อใช้งานผ่าน ajax
           
        // เตรียมข้อมูล form สำหรับส่งด้วย  FormData Object
       var formData = new FormData($("#myform1")[0]);
   
        // ส่งค่าแบบ POST ไปยังไฟล์ read_excel.php รูปแบบ ajax แบบเต็ม
        $.ajax({
            url: 'read_excel.php',
            type: 'POST',
            data: formData,
            /*async: false,*/
            cache: false,
            contentType: false,
            processData: false
        }).done(function(data){
                console.log(data);  // ทดสอบแสดงค่า  ดูผ่านหน้า console
/*              การใช้งาน console log เพื่อ debug javascript ใน chrome firefox และ ie
                https://www.ninenik.com/content.php?arti_id=692 via @ninenik         */
                $("#fname").val(eval("data." + $("#selectcell1").val()));
                $("#lname").val(eval("data." + $("#selectcell2").val()));
        });    
    });  
});
</script>
</body>
</html>
 
2. read_excel.php

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
header("Content-type:application/json; charset=UTF-8");   
header("Cache-Control: no-store, no-cache, must-revalidate");        
header("Cache-Control: post-check=0, pre-check=0", false);
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Asia/Bangkok');
require_once("PHPExcel/Classes/PHPExcel.php");
?>
<?php
if(isset($_FILES['excelFile']['name']) && $_FILES['excelFile']['name']!=""){
    $tmpFile = $_FILES['excelFile']['tmp_name']; 
    $fileName = $_FILES['excelFile']['name'];  // เก็บชื่อไฟล์
    $_fileup = $_FILES['excelFile'];
    $info = pathinfo($fileName);
    $allow_file = array("csv","xls","xlsx");
/*  print_r($info);         // ข้อมูลไฟล์  
    print_r($_fileup);*/
    if($fileName!="" && in_array($info['extension'],$allow_file)){
        // อ่านไฟล์จาก path temp ชั่วคราวที่เราอัพโหลด
        $objPHPExcel = PHPExcel_IOFactory::load($tmpFile);     
             
             
        // ดึงข้อมูลของแต่ละเซลในตารางมาไว้ใช้งานในรูปแบบตัวแปร array
        $cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
              
        // วนลูปแสดงข้อมูล
        $v=1;
        $json_data = array();
        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();         
                 
            // เท่านี้เราก็สามารถแสดงข้อมูลจากการอ่านไฟล์ได้แล้ว และสามารถนำข้อมูลเหล่านี้
            // ทำการบันทักลงฐานข้อมูล หรือแสดงได้เลย
            $json_data["$column$row"] = $data_value;
//            echo $v." ----  ".$data_value."<br>";
             $v++;
        }      
         // แปลง array เป็นรูปแบบ json string 
        if(isset($json_data)){ 
            $json= json_encode($json_data);   
            if(isset($_GET['callback']) && $_GET['callback']!=""){   
            echo $_GET['callback']."(".$json.");";       
            }else{   
            echo $json;   
            }   
        }       
    }
}
?>
 
 
4. PHPExcel ซึ่งโหลดจากเว็บ https://github.com/PHPOffice/PHPExcel/ ซึ่งมีโครงสร้างของไฟล์ทั้งหมด ดังนี้ครับ
 
 
Screenshot ครับ



Sumate Mephokkij 13-03-2020 11:32






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