javascript atscript एक्सेल फ़ाइल को जावास्क्रिप्ट/एचटीएमएल 5 में कैसे पार्स करें




स्क्रिप्टिंग भाषा (7)

var excel = new ActiveXObject ("Excel.Aplication"); var book = excel.Workbooks.Open (your_full_file_name_here.xls); var sheet = book.Sheets.Item (1); var value = sheet.Range ("A1");

जब आपके पास चादर है। आप एक्सेल में करते हुए वीबीए फ़ंक्शंस का उपयोग कर सकते हैं।

मैं FileReader माध्यम से एक्सेल फ़ाइल को पढ़ने में सक्षम FileReader लेकिन यह टेक्स्ट के साथ-साथ अजीब पात्रों को आउटपुट करता है। मुझे xls फ़ाइल पंक्ति-वार पढ़ने की आवश्यकता है, प्रत्येक कॉलम में डेटा पढ़ें और इसे JSON में रूपांतरित करें।

क्या कोई जानता है कि पंक्ति द्वारा xls फ़ाइल पंक्ति को कैसे पढ़ा जाए।

किसी भी मदद को बहुत सराहा जाएगा।


एक्सएलएस माइक्रोसॉफ्ट द्वारा उपयोग किया जाने वाला एक द्विआधारी मालिकाना प्रारूप है। सर्वर साइड भाषाओं के साथ एक्सएलएस पार्सिंग कुछ विशिष्ट लाइब्रेरी या ऑफिस इंटरऑप का उपयोग किए बिना बहुत मुश्किल है। जावास्क्रिप्ट के साथ ऐसा करना मिशन असंभव है। एचटीएमएल 5 फाइल एपीआई के लिए धन्यवाद, आप इसकी बाइनरी सामग्री पढ़ सकते हैं लेकिन इसे पार्स और व्याख्या करने के लिए आपको एक्सएलएस प्रारूप के विनिर्देशों में गोता लगाने की आवश्यकता होगी। Office 2007 से शुरू होने पर, माइक्रोसॉफ्ट ने ओपन एक्सएमएल फ़ाइल प्रारूप (एक्सेल के लिए xslx ) को गले लगा लिया जो एक मानक है।


xslx.js, xlsx.full.min.js, jszip.js शामिल करें

एक फ़ाइल इवेंट हैंडलर को फ़ाइल इनपुट में जोड़ें

function showDataExcel(event)
{
            var file = event.target.files[0];
            var reader = new FileReader();
            var excelData = [];
            reader.onload = function (event) {
                var data = event.target.result;
                var workbook = XLSX.read(data, {
                    type: 'binary'
                });

                workbook.SheetNames.forEach(function (sheetName) {
                    // Here is your object
                    var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);

                    for (var i = 0; i < XL_row_object.length; i++)
                    {
                        excelData.push(XL_row_object[i]["your column name"]);

                    }

                    var json_object = JSON.stringify(XL_row_object);
                    console.log(json_object);
                    alert(excelData);
                })

            };

            reader.onerror = function (ex) {
                console.log(ex);
            };

            reader.readAsBinaryString(file);

}

फ़ंक्शन के नीचे Excel शीट (एक्सएलएसएक्स प्रारूप) डेटा जेएसओएन में परिवर्तित करता है। आप समारोह में वादा जोड़ सकते हैं।

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
<script>
var ExcelToJSON = function() {

  this.parseExcel = function(file) {
    var reader = new FileReader();

    reader.onload = function(e) {
      var data = e.target.result();
      var workbook = XLSX.read(data, {
        type: 'binary'
      });

      workbook.SheetNames.forEach(function(sheetName) {
        // Here is your object
        var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
        var json_object = JSON.stringify(XL_row_object);
        console.log(json_object);

      })

    };

    reader.onerror = function(ex) {
      console.log(ex);
    };

    reader.readAsBinaryString(file);
  };
};
</script>

पोस्ट के नीचे एक्सएलएस प्रारूप एक्सेल के लिए जेएसओएन जावास्क्रिप्ट कोड कोड है?


यदि आप कभी सोच रहे हैं कि सर्वर से फ़ाइल को कैसे पढ़ा जाए तो यह कोड उपयोगी हो सकता है।

प्रतिबंध:

  1. फ़ाइल सर्वर (स्थानीय / रिमोट) में होनी चाहिए।
  2. आपको हेडर सेट करना होगा या सीओआरएस Google प्लगइन रखना होगा।

<Head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script lang="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.12.4/xlsx.core.min.js"></script>
</head>

<body>
    <script>
    /* set up XMLHttpRequest */


    // replace it with your file path in local server
    var url = "http://localhost/test.xlsx";

    var oReq = new XMLHttpRequest();
    oReq.open("GET", url, true);
    oReq.responseType = "arraybuffer";

    oReq.onload = function(e) {
        var arraybuffer = oReq.response;

        /* convert data to binary string */
        var data = new Uint8Array(arraybuffer);

        var arr = new Array();
        for (var i = 0; i != data.length; ++i) {
            arr[i] = String.fromCharCode(data[i]);
        }

        var bstr = arr.join("");

        var cfb = XLSX.read(bstr, { type: 'binary' });

        cfb.SheetNames.forEach(function(sheetName, index) {

            // Obtain The Current Row As CSV
            var fieldsObjs = XLS.utils.sheet_to_json(cfb.Sheets[sheetName]);

            fieldsObjs.map(function(field) {
                $("#my_file_output").append('<input type="checkbox" value="' + field.Fields + '">' + field.Fields + '<br>');
            });

        });
    }

    oReq.send();
    </script>
</body>
<div id="my_file_output">
</div>

</html>

यह कोड आपकी मदद कर सकता है
अधिकांश समय jszip.js काम नहीं कर रहा है इसलिए अपने जेएस कोड में xlsx.full.min.js शामिल करें।

HTML कोड

 <input type="file" id="file" ng-model="csvFile"  
    onchange="angular.element(this).scope().ExcelExport(event)"/>

जावास्क्रिप्ट

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.10.8/xlsx.full.min.js">
</script>

$scope.ExcelExport= function (event) {


    var input = event.target;
    var reader = new FileReader();
    reader.onload = function(){
        var fileData = reader.result;
        var wb = XLSX.read(fileData, {type : 'binary'});

        wb.SheetNames.forEach(function(sheetName){
        var rowObj =XLSX.utils.sheet_to_row_object_array(wb.Sheets[sheetName]);
        var jsonObj = JSON.stringify(rowObj);
        console.log(jsonObj)
        })
    };
    reader.readAsBinaryString(input.files[0]);
    };

यदि आप ब्राउज़र में * .xslx फ़ाइल पढ़ने का सबसे सरल और सबसे छोटा तरीका चाहते हैं तो यह लाइब्रेरी ऐसा कर सकती है:

https://catamphetamine.github.io/read-excel-file/

<input type="file" id="input" />
import readXlsxFile from 'read-excel-file'

const input = document.getElementById('input')

input.addEventListener('change', () => {
  readXlsxFile(input.files[0]).then((data) => {
    // `data` is an array of rows
    // each row being an array of cells.
  })
})

उपर्युक्त उदाहरण में कच्चे स्ट्रिंग डेटा है। schema तर्क पारित करके इसे सख्त स्कीमा के साथ JSON पर पार्स किया जा सकता है। इसके उदाहरण के लिए एपीआई दस्तावेज़ देखें।

एपीआई दस्तावेज़: http://npmjs.com/package/read-excel-file





filereader