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.