javaScript讀取.csv文件或.xlsx文件


在讀取.xlsx文件的時候,需要引入xlsx.core.min.js;

<script type="text/javascript" src="./xlsx.core.min.js"></script>
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="uploadFile border_bg">
        <form action="" method="post" id="formToUpdate">
            <div class="form-group">
                <label ><strong>Import from csv</strong></label>
                <input type="file" name="uploadCSV" id="upCsv">
                <input id="ajaxSubmit" type="button" value="upload CSV" class="btn">
            </div>
        </form>
    </div>
</body>
<script type="text/javascript" src="./jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="./xlsx.core.min.js"></script>
<script>
$("#ajaxSubmit").click(function(e) {
    var sum = 0;
    var fileType = $('#upCsv').val().split('.');
    var files = document.getElementById("upCsv").files;
    var name = files[0] ? files[0].name : '';
    $("#ajaxSubmit").attr("disabled","disabled");
    // 判斷上傳的文件類型
    if((fileType[fileType.length-1]) === 'csv' || (fileType[fileType.length-1]) === 'CSV'){
        var data = [];
        var files = document.getElementById("upCsv").files;
        
        if(files.length) {
            var file = files[0];
            var reader = new FileReader(); //new一個FileReader實例
            if(typeof FileReader == 'undefined') {
                alert("你的瀏覽器暫不支持該功能", {title: "提示", skin: "layui-layer-molv"});
                file.setAttribute("disabled", "disabled");
                return;
            }
            reader.readAsText(file);
            reader.onload = function() {
                var num = null;
                var relArr = this.result.split("\r\n");

                if(!$.isEmptyObject(relArr) && relArr.length > 1) {
                    for(var key = 0; key < relArr.length; key++) {
                        var values = relArr[key];
                        if(!$.isEmptyObject(values)) {
                            var objArr = values.split(",");
                            data.push(objArr);
                        }
                    }
                }
                // 判斷“應付返利金額”是表頭的第幾個
                for(var key = 0; key < data[0].length; key++){
                    if(data[0][key]==="應付返利金額"){
                        num = key
                    }
                }
                // 這里做了一個讀取表頭為“應付返利金額”的數值的和
                for(var key=1; key < data.length; key++){
                    sum += parseFloat(data[key][num])
                }
                myAjax((Math.round(sum*100))/100,name);
                console.log((Math.round(sum*100))/100,name);
                // 將算出來的和和文件名稱傳給后端
                $("#ajaxSubmit").removeAttr("disabled");
            }
        }
    }else if((fileType[fileType.length-1]) === 'xlsx' || (fileType[fileType.length-1]) === 'XLSX'){
            var fileReader = new FileReader();
            fileReader.onload = function(ev) {
                try {
                    var data = ev.target.result,
                        workbook = XLSX.read(data, {
                            type: 'binary'
                        }), // 以二進制流方式讀取得到整份excel表格對象
                        persons = []; // 存儲獲取到的數據
                } catch (e) {
                    alert('文件類型不正確');
                    return;
                }

                // 表格的表格范圍,可用於判斷表頭是否數量是否正確
                var fromTo = '';
                // 遍歷每張表讀取
                for (var sheet in workbook.Sheets) {
                    if (workbook.Sheets.hasOwnProperty(sheet)) {
                        fromTo = workbook.Sheets[sheet]['!ref'];
                        persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
                        break; // 如果只取第一張表,就取消注釋這行
                    }
                }
                // 這里做了一個讀取表頭為“應付返利金額”的數值的和
                for(var key=0; key<persons.length; key++){
                    var onePrice = persons[key]["應付返利金額"]
                    sum += onePrice;
                }
                console.log((Math.round(sum*100))/100);
                // 將算出來的和和文件名稱傳給后端
                myAjax((Math.round(sum*100))/100,name);
                    $("#ajaxSubmit").removeAttr("disabled");
                };
            // 以二進制方式打開文件
            fileReader.readAsBinaryString(files[0]);
            
    }else{
        alert("請上傳.csv或.xlsx文件");
        $("#ajaxSubmit").removeAttr("disabled");
    }
    // 給后端“應付返利金額”的數值的和,文件名的ajax
    function myAjax(sum,name){
        console.log(sum,name)
        // $.ajax({
        //     type: "post",
        //     url: "路徑",
        //     data: {
        //         sum,
        //         name
        //     },
        //     dataType: "json",
        //     success: function(data){
        //         console.log(data)
        //     }
        // });
    }     
})
</script>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM