una tablas tabla por manejo linea leer example dinamicas datos contenido con archivos archivo agregar javascript json html5 xls filereader

tablas - Cómo analizar el archivo de Excel en Javascript/HTML5



manejo de archivos en javascript (8)

Debajo de Función convierte los datos de la hoja de Excel (formato XLSX) a JSON. puedes agregar promesa a la función.

<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>

Debajo de la publicación tiene el código para el formato XLS de Excel a JSON código de JavaScript?

Puedo leer el archivo de Excel a través de FileReader pero genera texto y caracteres extraños con él. Necesito leer el archivo xls filas, leer los datos en cada columna y convertirlos a JSON.

¿Alguien sabe cómo leer el archivo xls fila por fila?

Cualquier ayuda sería muy apreciada.


Este código puede ayudarte
La mayoría de las veces jszip.js no funciona, por lo tanto, incluye xlsx.full.min.js en tu código js.

Código HTML

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

Javascript

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


Si alguna vez te preguntas cómo leer un archivo del servidor, este código podría ser útil.

Restricciones

  1. El archivo debe estar en el servidor (Local / Remoto).
  2. Tendrás que configurar encabezados o tener CORS google plugin.

<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>


Si desea la forma más simple y minúscula de leer un archivo * .xslx en un navegador, entonces esta biblioteca podría:

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

En el ejemplo anterior, los data son datos de cadena sin procesar. Se puede analizar en JSON con un esquema estricto pasando el argumento de schema . Ver los documentos API para un ejemplo de eso.

Documentos de la API: http://npmjs.com/package/read-excel-file


Una vieja pregunta, pero debería tener en cuenta que la tarea general de analizar archivos XLS desde JavaScript es tediosa y difícil, pero no imposible.

Tengo analizadores básicos implementados en JS puro:

Ambas páginas son analizadores XLS / XLSX basados ​​en API de archivos HTML5 (puede arrastrar y soltar su archivo e imprimirá los datos en las celdas de una lista separada por comas). También puede generar objetos JSON (suponiendo que la primera fila sea una fila de encabezado).

El conjunto de pruebas http://oss.sheetjs.com/ muestra una versión que usa XHR para obtener y analizar archivos.


XLS es un formato patentado binario utilizado por Microsoft. El análisis de XLS con lenguajes del lado del servidor es muy difícil sin utilizar alguna biblioteca específica o Office Interop. Hacer esto con javascript es misión imposible. Gracias a HTML5 File API puedes leer sus contenidos binarios, pero para poder analizarlos e interpretarlos necesitarás profundizar en las especificaciones del formato XLS . A partir de Office 2007, Microsoft adoptó los formatos de archivo Open XML ( xslx para Excel) que es un estándar.


incluye el xslx.js, xlsx.full.min.js, jszip.js

agregar un controlador de eventos onchange a la entrada del archivo

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


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

cuando tienes la hoja Puede usar las funciones de VBA como lo hace en Excel.