乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JS-XLS/X讀取和解析Excel表格文件(xls/xlsx)的JavaScript插件

       quasiceo 2016-12-21

      JS-XLS/X讀取和解析Excel表格文件(xls/xlsx)的JavaScript插件

      字?jǐn)?shù)8636 · 瀏覽 5546 · 評(píng)論 0

      最近有一個(gè)要求,我的一個(gè)項(xiàng)目中解析Excel文件(與xls/xlsx擴(kuò)展)在瀏覽器(使用JavaScript當(dāng)然)。所以我在網(wǎng)上看了一下,發(fā)現(xiàn)了這2個(gè)有用的庫:

      讓我們看看他們是如何工作的。

      兼容性

      支持讀取文件格式

      • Excel 2007+ XML Formats (XLSX/XLSM)
      • Excel 2007+ Binary Format (XLSB)
      • Excel 2003-2004 XML Format (XML “SpreadsheetML”)
      • Excel 97-2004 (XLS BIFF8)
      • Excel 5.0/95 (XLS BIFF5)
      • OpenDocument Spreadsheet (ODS)

      支持寫文件格式

      • XLSX
      • CSV (and general DSV)
      • JSON and JS objects (various styles)

      Demo: http://oss./js-xlsx

      Source: http:///xlsx

      JS-XLS

      JS-XLS的安裝是很簡單的,在瀏覽器中使用該腳本文件,并使用腳本標(biāo)記加載它:

      <!-- https://github.com/SheetJS/js-xls/blob/master/xls.js -->
      <script src="/path/to/xls.js"></script>

      對(duì)于Node.js,只要通過NPM安裝:

      $ npm install xlsjs
      $ node
      > require('xlsjs').readFile('excel_file.xls');

      然后,我們可以簡單地使用他們提供的代碼在他們的index.html文件解析和轉(zhuǎn)換的xls文件JSON,CSV或公式為基礎(chǔ)的輸出。

      function get_radio_value( radioName ) {
        var radios = document.getElementsByName( radioName );
        for( var i = 0; i < radios.length; i++ ) {
          if( radios[i].checked ) {
            return radios[i].value;
          }
        }
      }
       
      function to_json(workbook) {
        var result = {};
        workbook.SheetNames.forEach(function(sheetName) {
          var roa = XLS.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
          if(roa.length > 0){
            result[sheetName] = roa;
          }
        });
        return result;
      }
       
      function to_csv(workbook) {
        var result = [];
        workbook.SheetNames.forEach(function(sheetName) {
          var csv = XLS.utils.make_csv(workbook.Sheets[sheetName]);
          if(csv.length > 0){
            result.push("SHEET: " + sheetName);
            result.push("");
            result.push(csv);
          }
        });
        return result.join("\n");
      }
       
      function to_formulae(workbook) {
        var result = [];
        workbook.SheetNames.forEach(function(sheetName) {
          var formulae = XLS.utils.get_formulae(workbook.Sheets[sheetName]);
          if(formulae.length > 0){
            result.push("SHEET: " + sheetName);
            result.push("");
            result.push(formulae.join("\n"));
          }
        });
        return result.join("\n");
      }
       
      var tarea = document.getElementById('b64data');
      function b64it() {
        var cfb = XLS.CFB.read(tarea.value, {type: 'base64'});
        var wb = XLS.parse_xlscfb(cfb);
        process_wb(wb);
      }
       
      function process_wb(wb) {
        var output = "";
        switch(get_radio_value("format")) {
          case "json":
            output = JSON.stringify(to_json(wb), 2, 2);
            break;
          case "form":
            output = to_formulae(wb);
            break; 
          default:
            output = to_csv(wb);
        }
        if(out.innerText === undefined) out.textContent = output;
        else out.innerText = output;
      }
       
      var drop = document.getElementById('drop');
      function handleDrop(e) {
        e.stopPropagation();
        e.preventDefault();
        var files = e.dataTransfer.files;
        var i,f;
        for (i = 0, f = files[i]; i != files.length; ++i) {
          var reader = new FileReader();
          var name = f.name;
          reader.onload = function(e) {
            var data = e.target.result;
            var cfb = XLS.CFB.read(data, {type: 'binary'});
            //var arr = String.fromCharCode.apply(null, new Uint8Array(data));
            //var cfb = XLS.CFB.read(btoa(arr), {type: 'base64'});
            var wb = XLS.parse_xlscfb(cfb);
            process_wb(wb);
          };
          reader.readAsBinaryString(f);
          //reader.readAsArrayBuffer(f);
        }
      }
       
      function handleDragover(e) {
        e.stopPropagation();
        e.preventDefault();
        e.dataTransfer.dropEffect = 'copy';
      }
       
      if(drop.addEventListener) {
        drop.addEventListener('dragenter', handleDragover, false);
        drop.addEventListener('dragover', handleDragover, false);
        drop.addEventListener('drop', handleDrop, false);
      }

      JS代碼很容易理解,它使用了HTML5拖放API允許我們上傳文件然后看他們?yōu)槎M(jìn)制字符串。二進(jìn)制,然后直接傳遞到庫,并進(jìn)一步分析使用此代碼:

      var cfb = XLS.CFB.read(data, {type: 'binary'});
      var wb = XLS.parse_xlscfb(cfb);

      最終,WB(Workbook)對(duì)象是處理并轉(zhuǎn)換成需要的格式(JSON,CSV和Excel公式)。這沒有HTML5拖放文件閱讀器的API,可用于Node.js代碼相同。

      注:此模塊不支持xlsx。為了克服這一限制,我們可以通過同一作者稱為JS-XLSX用另一個(gè)包。

      JS-XLSX

      再次,安裝和使用與上一節(jié)幾乎相同。使用瀏覽器加載jszip.js和xlsx文件:

      <!-- https://github.com/SheetJS/js-xlsx/blob/master/jszip.js -->
      <script src="/path/to/jszip.js"></script>
      <!-- https://github.com/SheetJS/js-xlsx/blob/master/xlsx.js -->
      <script src="/path/to/xlsx.js"></script>

      對(duì)于Node.js,只要通過NPM安裝:

      $ npm install xlsx
      $ node
      > require('xlsx').readFile('excel_file.xlsx');

      我們可以再次使用項(xiàng)目中的index.html提供代碼轉(zhuǎn)換xlsx JSON,CSV或公式為基礎(chǔ)的輸出。

      function get_radio_value( radioName ) {
          var radios = document.getElementsByName( radioName );
          for( var i = 0; i < radios.length; i++ ) {
              if( radios[i].checked ) {
                  return radios[i].value;
              }
          }
      }
       
      function to_json(workbook) {
          var result = {};
          workbook.SheetNames.forEach(function(sheetName) {
              var roa = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
              if(roa.length > 0){
                  result[sheetName] = roa;
              }
          });
          return result;
      }
       
      function to_csv(workbook) {
          var result = [];
          workbook.SheetNames.forEach(function(sheetName) {
              var csv = XLSX.utils.sheet_to_csv(workbook.Sheets[sheetName]);
              if(csv.length > 0){
                  result.push("SHEET: " + sheetName);
                  result.push("");
                  result.push(csv);
              }
          });
          return result.join("\n");
      }
       
      function to_formulae(workbook) {
          var result = [];
          workbook.SheetNames.forEach(function(sheetName) {
              var formulae = XLSX.utils.get_formulae(workbook.Sheets[sheetName]);
              if(formulae.length > 0){
                  result.push("SHEET: " + sheetName);
                  result.push("");
                  result.push(formulae.join("\n"));
              }
          });
          return result.join("\n");
      }
       
      var tarea = document.getElementById('b64data');
      function b64it() {
          var wb = XLSX.read(tarea.value, {type: 'base64'});
          process_wb(wb);
      }
       
      function process_wb(wb) {
          var output = "";
          switch(get_radio_value("format")) {
              case "json":
              output = JSON.stringify(to_json(wb), 2, 2);
                  break;
              case "form":
                  output = to_formulae(wb);
                  break; 
              default:
              output = to_csv(wb);
          }
          if(out.innerText === undefined) out.textContent = output;
          else out.innerText = output;
      }
       
      var drop = document.getElementById('drop');
      function handleDrop(e) {
          e.stopPropagation();
          e.preventDefault();
          var files = e.dataTransfer.files;
          var i,f;
          for (i = 0, f = files[i]; i != files.length; ++i) {
              var reader = new FileReader();
              var name = f.name;
              reader.onload = function(e) {
                  var data = e.target.result;
                  //var wb = XLSX.read(data, {type: 'binary'});
                  var arr = String.fromCharCode.apply(null, new Uint8Array(data));
                  var wb = XLSX.read(btoa(arr), {type: 'base64'});
                  process_wb(wb);
              };
              //reader.readAsBinaryString(f);
              reader.readAsArrayBuffer(f);
          }
      }
       
      function handleDragover(e) {
          e.stopPropagation();
          e.preventDefault();
          e.dataTransfer.dropEffect = 'copy';
      }
       
      if(drop.addEventListener) {
          drop.addEventListener('dragenter', handleDragover, false);
          drop.addEventListener('dragover', handleDragover, false);
          drop.addEventListener('drop', handleDrop, false);
      }

      為編寫這些項(xiàng)目,使我們的任務(wù)更容易寫作者的道具。如果你有什么問題,請(qǐng)隨時(shí)問他們的意見。

      相關(guān)鏈接

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多