如何使用Javascript访问Excel文件的特定行

时间:2019-04-21 19:37:54

标签: javascript excel

我正在使用Javascript读取大型Excel文件的随机行。但是,例如,当我在excel文件中处理300.000行数据时,这会花费一些时间。我需要快速的方法。

<body>

<input type="file" id="fileUpload" />
<input type="button" id="upload" value="Upload" onclick="Upload()" />

<!-- <input type="button" id="upload" value="Random" onclick="ProcessExcel()" /> -->
<hr />
<h1 id="exc">Hello</h1>
<p id="her"></p>
<p id="limm"></p>
<div id="dvExcel"></div>


<script type="text/javascript">

 // var gl_ex = "";
    function Upload() {
        //Reference the FileUpload element.
        var fileUpload = document.getElementById("fileUpload");

        //Validate whether File is valid Excel file.
        var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.xls|.xlsx)$/;
        if (regex.test(fileUpload.value.toLowerCase())) {
            if (typeof (FileReader) != "undefined") {
                var reader = new FileReader();

                //For Browsers other than IE.
                if (reader.readAsBinaryString) {
                    reader.onload = function (e) {
                        ProcessExcel(e.target.result);
                    };
                    reader.readAsBinaryString(fileUpload.files[0]);
                } else {
                    //For IE Browser.
                    reader.onload = function (e) {
                        var data = "";
                        var bytes = new Uint8Array(e.target.result);
                        for (var i = 0; i < bytes.byteLength; i++) {
                            data += String.fromCharCode(bytes[i]);
                        }
                        ProcessExcel(data);
                      // gl_ex = data;
                       //alert("Uploaded.");
                    };
                    reader.readAsArrayBuffer(fileUpload.files[0]);
                }
            } else {
                alert("This browser does not support HTML5.");
            }
        } else {
            alert("Please upload a valid Excel file.");
        }
    };
    function ProcessExcel(data) {
        //var data = "";
         //data = gl_ex;
        //Read the Excel File data.
        var workbook = XLSX.read(data, {
            type: 'binary'
        });

        //Fetch the name of First Sheet.
        var firstSheet = workbook.SheetNames[0];

        //Read all rows from First Sheet into an JSON array.
        var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);

        var len = excelRows.length;
        var rand_num = Math.floor((Math.random() * len) + 1);
        document.getElementById("her").innerHTML = rand_num;
        document.getElementById("limm").innerHTML = len;
        document.getElementById("exc").innerHTML = excelRows[rand_num-1].Name;

    };
</script>



</body>

如所示示例,我正在从Excel文件中读取随机行。我认为javascript正在按顺序读取整个Excel文件。我可以更快地读取特定的行数据吗?

0 个答案:

没有答案