SheetJS讀取Excel文件內容


看看我1
看看我2
Object.keys()
Object.values()

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Test</title>
    <script src="~/Scripts/jquery-3.4.1.js"></script>
    <script src="~/Scripts/xlsx.full.min.js"></script>
</head>
<body>

    <div style="margin:20px">
        <input id="fileExcel" type="file" onchange="getExcelData(this)" style="width: 320px;">
<pre><p style="font-family: sans-serif;"></p></pre>
    </div>
    <script>

        //讀取Excel數據
        function getExcelData(obj) {
            var reader = new FileReader();

            //文件加載完成后調用
            reader.onload = function (e) {
                var data = e.target.result;

                //type為buffer時,IE瀏覽器不兼容xls
                //var workbook = XLSX.read(data, {
                //    type: 'buffer'
                //});

                //兼容IE,需把type改為binary,並對data進行轉化
                var workbook = XLSX.read(arrayBufferToBinaryString(data), {     //手動轉化
                    type: 'binary'
                });

                //獲取json格式的Excel數據
                var jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {
                    defval: 'null'  //單元格為空時的默認值
                });
                document.querySelector("p").innerHTML = JSON.stringify(jsonData, null, "\t");
                //document.querySelector("p").innerHTML = JSON.stringify(jsonDataToCells(jsonData), null, "\t");
            };

            //加載文件
            reader.readAsArrayBuffer(obj.files[0]);

            //不兼容IE,該特性是非標准的,請盡量不要在生產環境中使用它!
            //reader.readAsBinaryString(file);
            
        }

        //ArrayBuffer轉BinaryString
        function arrayBufferToBinaryString(data) {
            var o = "",
                l = 0,
                w = 10240;
            for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
            o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
            return o;
        }

        //轉化為交錯數組格式(兼容IE)
        /*
           [
           [], //第一行數據
           [], //第二行數據
           [], //第三行數據
           []  //第N行數據
           ]
        */
        function jsonDataToCells(jsonData) {
            var cellsData = [];     //用於存儲所有數據
            var rowData = [];       //用於臨時存儲每行數據
            var jsonDataKeys = Object.keys(jsonData[0]);
            for (var i = 0; i < jsonData.length; i++) {

                //IE不兼容
                //cellsData.push(Object.values(jsonData[i]));

                for (var j = 0; j < jsonDataKeys.length; j++) {
                    rowData.push(jsonData[i][jsonDataKeys[j]]);
                }
                cellsData.push(rowData);
                rowData = [];
            }
            return cellsData;
        }

    </script>
</body>
</html>


免責聲明!

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



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