zoukankan      html  css  js  c++  java
  • JS客户端读取Excel文件插件js-xls使用方法

    js-xls是一款客户端读取Excel的插件,亲测IE11、FireFox、Chrome可用,读取速度也可观。

    插件Demo地址:http://oss.sheetjs.com/js-xlsx/    http://oss.sheetjs.com/js-xls/

    Excel列信息

    js代码如下:

      1 var X = XLS;
      2 function to_json(workbook) {
      3     var result = {};
      4     workbook.SheetNames.forEach(function (sheetName) {
      5         var roa = XLS.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
      6         if (roa.length > 0) {
      7             result[sheetName] = roa;
      8         }
      9     });
     10     return result;
     11 }
     12 
     13 function fixdata(data) {
     14     var o = "", l = 0, w = 10240;
     15     for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
     16     o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
     17     return o;
     18 }
     19 
     20 function process_wb(wb,type) {
     21     var output = "";
     22     switch (type) {
     23         case "json":
     24             output = JSON.stringify(to_json(wb), 2, 2);
     25             break;
     26         case "form":
     27             output = to_formulae(wb);
     28             break;
     29         default:
     30             output = to_csv(wb);
     31     }
     32     //if (out.innerText === undefined) out.textContent = output;
     33     //else out.innerText = output;
     34     return output;
     35 } 
    47
    48 function ReadExcel(out) { 49 var selCodes = $("#selProductCodes").val(); 50 var exlData = JSON.parse(out); 51 var regCode = /^[1-9]d*$/; 52 var regQty = /^d*$/; 53 var ids = []; 54 var msg = ""; 55 if (exlData.Sheet1 == null || exlData.Sheet1 == undefined) { 56 msgErro("未查询到Excel文件中的数据!"); 57 saveLoading('hide'); 58 return; 59 } 60 for (var i = 0; i < exlData.Sheet1.length; i++) { 61 var sysno = exlData.Sheet1[i].ProductSysNo; 62 var qty = exlData.Sheet1[i].Qty; 63 if (sysno == undefined) 64 msg += "Qty列数据为 " + qty + " 的行,缺少ProductSysNo信息! "; 65 else if (qty == undefined) 66 msg += "ProductSysNo列数据为 " + sysno + " 的行,缺少Qty信息! "; 67 else if (!regCode.test(sysno)) 68 msg += "ProductSysNo列数据为 " + sysno + " 不是有效的商品编号! "; 69 else if (!regQty.test(qty)) 70 msg += "Qty列数据为 " + qty + " 不是有效的数量格式! "; 71 else { 72 ids.push(sysno); 73 } 74 }
         //do something
    84 } 85 var xlf = document.getElementById('xlf'); //<input type="file" id="xlf" /> 86 function handleFile(e) { 87 if (e.target.files[0].name.indexOf(".xls") < 0) { 88 msgErro("请选择.xls格式文件!"); 89 return; 90 } 91 saveLoading('show'); 92 rABS = false; 93 use_worker = false; 94 var files = e.target.files; 95 var output = ""; 96 var f = files[0]; 97 { 98 var reader = new FileReader(); 99 var name = f.name; 100 reader.onload = function (e) { 101 if (typeof console !== 'undefined') console.log("onload", new Date(), rABS, use_worker); 102 var data = e.target.result; 103 if (use_worker) { 104 xw(data, process_wb); 105 } else { 106 var wb; 107 if (rABS) { 108 wb = X.read(data, { type: 'binary' }); 109 } else { 110 var arr = fixdata(data); 111 wb = X.read(btoa(arr), { type: 'base64' }); 112 } 113 output = process_wb(wb, "json"); 114 ReadExcel(output); 115 } 116 }; 117 if (rABS) reader.readAsBinaryString(f); 118 else reader.readAsArrayBuffer(f); 119 } 120 } 121 122 if (xlf.addEventListener) xlf.addEventListener('change', handleFile, false);

     js-xls插件下载地址:下载插件

  • 相关阅读:
    水平居中
    flex布局
    get新技能:上传了 flv 或 MP4 文件到服务器,可访问总是出现 “无法找到该页”的 404 错误
    小程序3.8
    小程序3.7
    Vue 中select option默认选中的处理方法
    HTML5 data属性
    静态html返回
    node中可读流、可写流
    node.js fs、http使用
  • 原文地址:https://www.cnblogs.com/Chaser-Eagle/p/6237842.html
Copyright © 2011-2022 走看看