如何用PHPExcel导入Excel文件解析响应表以输入标签(例如:将Hello的输入id =“ fname”自动填充到Hello,将id =“ lname”自动填充到World)?

问题描述 投票:-1回答:1

如何使用PHPExcel将响应表解析为Excel文件并将其导入所需的输入字段(例如:将input id="fname"自动填充为Hello并将input id="lname"自动填充为World)?

我可以

1。将文件发送到PHP。

2。用第三方库(使用PHPExcel库)解析EXCEL文件。

3。创建AJAX / POST到HTML页面的响应。

但是我无法使用PHPExcel将该响应表解析为将Excel文件导入所需的输入字段(例如:将input id="fname"自动填充为Hello,将input id="lname"自动填充为World)。

示例代码和文件位于底部。

  1. excelimport.xlsx(Excel文件)

Download Link

  1. [excelimport.php(PHP代码)
<!DOCTYPE html>
<html>
<head>
<style>
h2 {display: inline;}
</style>
<script>
var _validFileExtensions = [".xls", ".xlsx", ".csv"];    
function ValidateSingleInput(oInput) {
    if (oInput.type == "file") {
        var sFileName = oInput.value;
         if (sFileName.length > 0) {
            var blnValid = false;
            for (var j = 0; j < _validFileExtensions.length; j++) {
                var sCurExtension = _validFileExtensions[j];
                if (sFileName.substr(sFileName.length - sCurExtension.length, 

sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {
                    blnValid = true;
                    break;
                }
            }

            if (!blnValid) {
                alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", 

"));
                oInput.value = "";
                return false;
            }
        }
    }
    return true;
}
</script>
</head>
<body>

<?php
if(isset($_FILES['excel']) && $_FILES['excel']['error']==0) {
        require_once "PHPExcel/Classes/PHPExcel.php";
        $tmpfname = $_FILES['excel']['tmp_name'];
        $excelReader = PHPExcel_IOFactory::createReaderForFile($tmpfname);
        $excelObj = $excelReader->load($tmpfname);
        $worksheet = $excelObj->getSheet(0);
        $lastRow = $worksheet->getHighestRow();

        echo "<table class=\"table table-sm\">";
        for ($row = 1; $row <= $lastRow; $row++) {
             echo "<tr><td scope=\"row\">";
             echo $worksheet->getCell('A'.$row)->getValue();
             echo "</td><td>";
             echo $worksheet->getCell('B'.$row)->getValue();
             echo "</td><td>";
             echo $worksheet->getCell('C'.$row)->getValue();
             echo "</td><td>";
             echo $worksheet->getCell('D'.$row)->getValue();
             echo "</td><tr>";
        }
        echo "</table>";    
}
?>

<form action = "" method = "POST" enctype = "multipart/form-data">
    <h2 for="myfile1">Select files : </h2>
         <input type = "file" name = "excel" onchange="ValidateSingleInput(this)" />
         <input type = "submit"/><br><br>
</form>

    <h2 for="fname">First name : </h2><input type="text" id="fname" name="fname" 

value=""><br><br>
    <h2 for="lname">Last name : </h2><input type="text" id="lname" name="lname" 

value=""><br><br>
    <input type="submit" name="submit2">

</body>
</html>

我使用PHPExcel库通过link下载。

php html excel phpexcel html-input
1个回答
1
投票

好消息:我有完整的源代码,可以用PHPExcel导入Excel文件解析响应表以输入标签(例如:将Hello的输入id =“ fname”自动填充到Hello,将id =“ lname”输入World)代码。

我有link.的回答功劳,>

  1. excelimport.xlsx(Excel文件)
  2. Download Link

  1. [excelimport.php(PHP代码)
  2. <!DOCTYPE html>  
    <html>  
    <head>  
        <meta charset="UTF-8">  
        <title>Document</title>
        <style>
        h2 {display: inline;}
        </style>
    </head>
    
    <body>
    
    <form action="" method="post" enctype="multipart/form-data" name="myform1" id="myform1">
        <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 src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>     
    <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 
                    http://www.ninenik.com/content.php?arti_id=692 via @ninenik         */
                    $("#fname").val(data.A2);
                    $("#lname").val(data.B2);
            });     
    
        });
    
    
    });
    </script>
    </body>
    </html>
    
  1. [read_excel.php(PHP代码)
  2. <?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');
    // http://php.net/manual/en/timezones.php
    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;    
                }    
            }        
        }
    } 
    ?>
    

我使用PHPExcel库与link.一起下载

© www.soinside.com 2019 - 2024. All rights reserved.