Come analizzare il file Excel in Javascript / HTML5

Sono in grado di leggere il file Excel tramite FileReader ma restituisce testo e caratteri strani con esso. Ho bisogno di leggere il file xls riga-saggio, leggere i dati in ogni colonna e convertirlo in JSON.

Qualcuno sa come leggere file xls riga per riga.

Qualsiasi aiuto sarebbe molto apprezzato.

Sotto Funzione converte i dati del foglio Excel (formato XLSX) in JSON. puoi aggiungere promise alla funzione.

    

Sotto il post c’è il codice per il formato XLS da Excel a JSON codice javascript?

Vecchia domanda, ma dovrei notare che il compito generale di analizzare i file XLS da javascript è noioso e difficile ma non imansible.

Ho dei parser di base implementati in JS puro:

Entrambe le pagine sono parser XLS / XLSX basati su HTML5 File API (puoi trascinare il tuo file e stamperà i dati nelle celle in un elenco separato da virgole). Puoi anche generare oggetti JSON (supponendo che la prima riga sia una riga di intestazione).

La suite di test http://oss.sheetjs.com/ mostra una versione che utilizza XHR per ottenere e analizzare i file.

Questo codice può aiutarti
Il più delle volte jszip.js non funziona, quindi includi xlsx.full.min.js nel tuo codice js.

Codice HTML

   

Javascript

    $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]); }; 

Se vuoi il modo più semplice e più piccolo di leggere un file * .xslx in un browser, questa libreria potrebbe fare:

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

  
 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. }) }) 

Nell’esempio sopra i data sono dati stringa non elaborati. Può essere analizzato in JSON con uno schema rigoroso passando l’argomento schema . Vedi i documenti API per un esempio.

Documenti API: http://npmjs.com/package/read-excel-file

Se ti stai chiedendo come leggere un file dal server, questo codice potrebbe essere utile.

Restrizioni:

  1. Il file deve essere nel server (locale / remoto).
  2. Dovrai configurare le intestazioni o avere il plugin google per CORS.
        

include xslx.js, xlsx.full.min.js, jszip.js

aggiungi un gestore di eventi onchange all’input del file

 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); } 

XLS è un formato proprietario binario utilizzato da Microsoft. L’analisi di XLS con lingue lato server è molto difficile senza utilizzare alcuna libreria specifica o Office Interop. Fare questo con javascript è una missione imansible. Grazie all’API di file HTML5 puoi leggere i suoi contenuti binari ma per analizzarli e interpretarli dovrai approfondire le specifiche del formato XLS . A partire da Office 2007, Microsoft ha adottato i formati di file Open XML ( xslx per Excel), che è uno standard.

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

quando hai il foglio. È ansible utilizzare le funzioni VBA come in Excel.