domingo, 10 de abril de 2016

Importar Datos Excel a Html


Uno de los gandes problemas de hoy en dia es importar datos de excel y mostrarlo en html, en este artículo te vamos a explicar paso a paso como se realiza esta acción mediante el jquery.

1. Crear el folder.

Vamos a crear un folder en este caso llamado pruebas donde se va alojar todos los archivos para  poder hacer la importación de los datos de excel a html, como se muestra en la sigueinte imágen:



 
 2. Descargar las librerías.


Vamos a descargar las 2 librerias que vamos a necesitar para realizar el ejercicio, En esta caso va se el jquery-1.10.2 este lo puedes descargar aquí y la libreria xls esto lo puedes descargar aqui.

3. Estructura.

Dentro del directorio prueba vamos a crear el archivo Prueba.html y pegar las dos librerias tanto jquery-1.10.2.js y xls.js. Quedaría la estructura de la siguiente manera:


4. Código:
Dentro del archivo Prueba.html se escribe lo siguiente:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title>Importar Datos de Excel a Html</title>
  <script src="xls.js"></script>
  <script src="jquery-1.10.2.js"></script>
  <script language="JavaScript">
  var oFileIn;
 //Código JQuery
$(function() {
  oFileIn = document.getElementById('my_file_input');
  if (oFileIn.addEventListener) {
    oFileIn.addEventListener('change', filePicked, false);
  }
});

//Método que hace el proceso de importar excel a html
function filePicked(oEvent) {
  // Obtener el archivo del input
  var oFile = oEvent.target.files[0];
  var sFilename = oFile.name;
  // Crear un Archivo de Lectura HTML5
  var reader = new FileReader();

  // Leyendo los eventos cuando el archivo ha sido seleccionado
  reader.onload = function(e) {
    var data = e.target.result;
    var cfb = XLS.CFB.read(data, {
      type: 'binary'
    });
    var wb = XLS.parse_xlscfb(cfb);
    // Iterando sobre cada sheet
    wb.SheetNames.forEach(function(sheetName) {
      // Obtener la fila actual como CSV
      var sCSV = XLS.utils.make_csv(wb.Sheets[sheetName]);
      var data = XLS.utils.sheet_to_json(wb.Sheets[sheetName], {
        header: 1
      });
      $.each(data, function(indexR, valueR) {
        var sRow = "<tr>";
        $.each(data[indexR], function(indexC, valueC) {
          sRow = sRow + "<td>" + valueC + "</td>";
        });
        sRow = sRow + "</tr>";
        $("#my_file_output").append(sRow);
      });
    });
  };

    
// Llamar al JS Para empezar a leer el archivo .. Se podría retrasar esto si se desea
   reader.readAsBinaryString(oFile);
}

  </script>
  </head>
  <body>
    <input type="file" id="my_file_input" />
    <table id='my_file_output'></table>
  </body>
</html> 
5. Demostración.

Tenemos la demostración de este código primero en el formulario importamos el archivo excel y luego se muestra los datos de la fila en forma de tabla en html.



 Esta es la finalización del artículo espero que le haya servido de ayuda,  !Hasta pronto!

10 comentarios:

  1. Muy bueno, pero al momento de elegir el archivo, ya no despliega nada, que puede ser?

    ResponderEliminar
    Respuestas
    1. yo también lo probé y marca erro en la linea 30
      "var cfb = XLS.CFB.read(data, {" type: 'binary'
      });

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
    3. Le diste: npm install ?

      https://HDRamosMendoza.github.io/Perfil-Profesional/

      Eliminar
  2. Buenas tardes. Eh probado el demo y funciona muy bien para las extensiones de .csv y .xls.
    https://HDRamosMendoza.github.io/Perfil-Profesional/
    Gracias por el aporte.

    ResponderEliminar
  3. "Club de Ajedrez" y "laloer92". El demo lo integre aún proyecto actual que estoy trabajando. Me percate que no funciona según espero siempre en cuando que al deben de usar el siguiente tag.
    > Propiedad de tag CORRECTO: language="JavaScript"
    > Propiedad de tag INCORRECTO: type="text/javascript"
    https://HDRamosMendoza.github.io/Perfil-Profesional/

    ResponderEliminar
  4. (language="JavaScript"). Es para versiones de navegadores antiguos a partir del HTML4 en adelante se usa (type="text/javascript").

    https://HDRamosMendoza.github.io/Perfil-Profesional/

    ResponderEliminar
  5. No me Funciona alguien me puede ayudar, deseo generar en un archivo JSON de la info de Excel y posterior leerla en HTML/JS
    De antemano agradezco la atencion a este POST

    ResponderEliminar