• JavaScript:EXCEL文件讀取


    /* 讀取excel文件 
    * 基於xlsx.core.min.js
    * 下載地址:https://github.com/SheetJS/js-xlsx/blob/master/dist/xlsx.core.min.js
    * ele為input:file文件,onlyone是否只讀取第一個表格
    * callback回調函數,第一個參數為JSON數據,第二個為讀取的區域範圍
    */
    function readExcel(o,callback) {
        var type=o.type?o.type.toLowerCase():'array';
        var output=type=="array"?[]:{}; // 數據存儲
        var ele=o.ele;
        ele.onchange=function(e) {
            var files = e.target.files;
            var fileReader = new FileReader();
            fileReader.onload = function(ev) {
                var area = '';// 表格的範圍,用於判斷表頭數量                
                try {
                    var data = ev.target.result,
                        workbook = XLSX.read(data,{type: 'binary'}); // 以二進制流讀取文件
                } catch (e) {
                    alert('文件类型或数据格式不正确');
                    return;
                }                    
                // 遍歷每張表讀取數據
                for (var sheet in workbook.Sheets) {
                    if (workbook.Sheets.hasOwnProperty(sheet)) {
                        area = workbook.Sheets[sheet]['!ref'];
                        if(o.onlyone){
                            output = output.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
                            break; //是否只打開第一張表
                        }else{
                            switch (type){
                                case 'array':
                                    output = output.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
                                    break;
                                case "object":
                                    output[sheet]=XLSX.utils.sheet_to_json(workbook.Sheets[sheet]);
                                    break;
                            }
                        }
                    }
                }
                callback?callback(output,area):'';
            };
            fileReader.readAsBinaryString(files[0]); // 以二進制方式打開文件
        };
    }
  • 相关阅读:
    web前端优化之reflow(减少页面的回流)
    Javascript深拷贝
    MySQL 配置优化
    MySQ中Lmax_connections的合理设置
    Too many connections解决方案
    Linux 查看文件内容
    ON DUPLICATE KEY UPDATE
    jquery $.each 和for怎么跳出循环终止本次循环
    使用redis避免客户端频繁提交数据
    windows下为mysql添加日志
  • 原文地址:https://www.cnblogs.com/mandongpiaoxue/p/10494843.html
Copyright © 2020-2023  润新知