Leer archivo de Excel en C# .Net sin utilizar Librerías de office #spreadsheetlight

En este video te muestro como leer un archivo de Excel desde C# .Net y guardarlo en una base de datos sin utilizar las librerías de Office.

Utilizaremos una librería creada por el MIT llamada spreadsheetlight

Crear archivo de excel con spreadsheetlight: https://www.youtube.com/watch?v=NlTv8Xv7cW0

Aprende entity framework en 10 minutos: https://www.youtube.com/watch?v=6nT-RjMEG0o


string path = @"C:\turuta\miexcel.xlsx";
SLDocument sl = new SLDocument(path);

using (var db= new pruebaEntities()) {

    int iRow = 2;
    while (!string.IsNullOrEmpty(sl.GetCellValueAsString(iRow, 1)))
    {
          string codigo = sl.GetCellValueAsString(iRow, 1);
          string nombre = sl.GetCellValueAsString(iRow, 2);
          int edad = sl.GetCellValueAsInt32(iRow, 3);

          var oMiExcel = new miexcel();
          oMiExcel.codigo = codigo;
          oMiExcel.nombre = nombre;
          oMiExcel.edad = edad;

          db.miexcel.Add(oMiExcel);
          db.SaveChanges();

          iRow++;
      }

}

Crear archivo de Excel en C# .Net sin utilizar Librerías de office #spreadsheetlight #DataTable

En este video te muestro como crear un archivo de Excel desde C# .Net sin utilizar las librerías de Office.

Utilizaremos una librería creada por el MIT llamada spreadsheetlight

Sitio web de spreadsheetlight: http://spreadsheetlight.com/sample-code/


string pathFile = AppDomain.CurrentDomain.BaseDirectory + "miExcel.xlsx";

SLDocument oSLDocument = new SLDocument();

System.Data.DataTable dt = new System.Data.DataTable();

//columnas
dt.Columns.Add("Nombre",typeof(string));
dt.Columns.Add("Edad",typeof(int));
dt.Columns.Add("Sexo",typeof(string));

//registros , rows
dt.Rows.Add("Pepe",19,"Hombre");
dt.Rows.Add("Ana",20,"Mujer");
dt.Rows.Add("Perla",30,"Mujer");

oSLDocument.ImportDataTable(1, 1, dt, true);

oSLDocument.SaveAs(pathFile);

Crear un archivo de Excel en C# .Net sin utilizar las librerías de Office #SpreadsheetLight

Para crear un Excel sin utilizar los dlls de office podemos hacer uso de una librería OpenSource de nombre SpreadsheetLight que creó el MIT.

Primero podemos descargar la librería de la su página: http://spreadsheetlight.com/download/

O podemos descargarla mediante Nuget poniendo su nombre (SpreadsheetLight).

Esta librería tiene una dependencia y es importante agregar la librería DocumentFormat.OpenXml pero tiene que ser la versión 2.0 ya que la más nueva 2.5 no me corrió. Para eso pueden dar clic en este enlace http://www.microsoft.com/en-us/download/details.aspx?id=5124 y pueden descargar la versión 2.0. Ya instalado ese paquete ya solo van a la ruta donde se instaló que casi siempre es c:/Program Files/Open Xml SDK/V2.0/ y ya de ahí solo la agregan a sus referencias al proyecto.

A continuación pongo la siguiente clase como ejemplo con sus comentarios paso por paso.

using SpreadsheetLight;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CreacionDeExcelSinOffice
{
    class CreadorExcel
    {

        private string rutaArchivoCompleta = "";

        public CreadorExcel(string nombreArchivo)
        {
            //obtenemos la ruta de nuestro programa y concatenamos el nombre del archivo a crear
            rutaArchivoCompleta = AppDomain.CurrentDomain.BaseDirectory + "/" + nombreArchivo;

        }

        public void CrearExcel()
        {
            try
            {
                //creamos el objeto SLDocument el cual creara el excel
                SLDocument sl = new SLDocument();

                //creamos las celdas en diagonal
                //utilizando la función setcellvalue pueden navegar sobre el documento
                //primer parametro es la fila el segundo la columna y el tercero el dato de la celda
                for (int i = 1; i <= 10; ++i) sl.SetCellValue(i, i, "patito "+i);

                //Guardar como, y aqui ponemos la ruta de nuestro archivo
                sl.SaveAs(rutaArchivoCompleta);

            }catch(Exception ex){
                Console.WriteLine("Ocurrio una Excepción: "+ex.Message);
            }

        }

    }
}

Y de esta manera hacemos uso de la anterior clase.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CreacionDeExcelSinOffice
{
    class Program
    {
        static void Main(string[] args)
        {
            //creamos la clase enviandole el nombre del archivo que deseemos
            CreadorExcel oCreadorExcel = new CreadorExcel("patito.xlsx");
            //ejecutamos el metodo que crea el excel
            oCreadorExcel.CrearExcel();

            //Esto ultimo solo para verificar que todo fue bien.
            Console.WriteLine("Se creo el archivo, presiona una tecla para terminar");
            Console.ReadKey();
        }
    }
}

Con esta librería pueden hacer miles de cosas como poner imágenes, gráficos, colores etc. Pero para eso pueden ir directo a este enlace y ver los ejemplos que el mismo MIT da de ayuda.