InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
Creando cadenas de conexión ConnectionStrings en .net 3.5 o visual Studio 2008 usando SqlConnectionStringBuilder
Migración de WSE a WCF (Web Services de 2005 a 2008)
Generar archivos PDF con C#
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config
Leer un campo XML de SQL Server 2005 con C#
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
String.Format

Afiliados
La Web del programador
MundoProgramacion


 

Generar un fichero Excel con C# sin tener Excel instalado.

    En muchas ocasiones hemos necesitado generar ficheros Excel. Al usuario le gusta Excel y por eso quiere que las aplicaciones le den la posibilidad de guardar sus datos como Excel.

    Normalmente establecemos una referencia desde nuestro programa a Excel y generamos el fichero, con mayor o menor exito ...

    El problema surge cuando el proceso se desarrolla en un servidor, donde normalmente no está instalado Office, y no hay forma humana de convencer a ningún administrador de sistemas de que lo instale (y muy bien que hace!).

    ¿Entonces que podemos hacer? La solución es más ingeniosa que técnica, pero funciona perfectamente. Excel es capaz de interpretar ficheros html como si se tratasen de ficheros de Excel normales. Dado que los ficheros de html son ficheros de texto plano, solo debemos generar nuestro fichero en html pero darle la extension *.xls de excel.  

    El siguiente ejemplo crea dos ficheros, ambos en formato html pero uno con extension *.html y otro con extension *.xls. Como podemos ver,  el fichero *.xls se muestra como un archivo de Excel.

    La siguiente imagen muestra el archivo con extension *.html visto en Internet Explorer.

    El mismo fichero con extension *.xls visto con MicroSoft Excel. La posibilidad de usar estilos CSS nos permite generar ficheros muy vistosos.

    El siguiente listado muestra el códgio C# necesario para generar este ejemplo.


using System;
using System.IO;
using System.Text;
namespace Devjoker        
{
                        
 public class Principal
 { 
  public static void Main()
  {
   GenExcell ge = new GenExcell();
   ge.DoExcell("nuevo_file.html");
   ge.DoExcell("nuevo_file.xls");
  }
 } 
 
 internal class GenExcell 
 {
StreamWriter w;


   public int DoExcell(string ruta)
   {
    FileStream fs = new FileStream(ruta, FileMode.Create,
FileAccess.ReadWrite);
    w = new StreamWriter(fs);   
    EscribeCabecera();         
                      
   for (int i=0;i<20;i++)
    {
     EscribeLinea(i);  
    }   
   
    EscribePiePagina();                             
    w.Close(); 
    return 0;
  }  
  
  public void EscribeCabecera()
  {
   StringBuilder html = new StringBuilder();
   html.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD
HTML 4.0 Transitional//EN\">"
);
   html.Append("<html>");
   html.Append(" <head>");
   html.Append("<title>www.devjoker.com</title>");
   html.Append("<meta http-equiv=\"Content-Type\"
content=\"text/html; charset=UTF-8\" />"
);
   html.Append(" </head>");
   html.Append("<body>");
   html.Append("<p>");
   html.Append("<table>");
   html.Append("<tr style=\"font-weight:
bold;font-size: 12px;color: white;\">"
);
   html.Append("<td></td>
<td bgcolor=\"Blue\">Titulo de la tabla:</td>"
);
   html.Append("<td bgcolor=\"Blue\">Iteración:</td>");
   html.Append("</tr>");
      
   w.Write(html.ToString());
  }
  
  public void EscribeLinea( int i)
  {   
   string bgColor = "", fontColor = "";
   if (i % 2 ==  0)
   {
    bgColor   = " bgcolor=\"LightBlue\" ";
    fontColor = " style=\"font-size: 10px;color: white;\" ";
   }
   w.Write(@"<tr ><td ></td><td {2} {3}>Titulo de la celda:{0}
         </td><td {2} {3}>Valor de la celda: {1}</td></tr>"

         ,i.ToString(),i.ToString(), bgColor, fontColor);
  }
  
  public void EscribePiePagina()
  {
   StringBuilder html = new StringBuilder();       
   html.Append(" </table>");
   html.Append("</p>");
   html.Append(" </body>");
   html.Append("</html>");
   w.Write(html.ToString());
  }
  
 }
} 

     Como vemos, el programa es tan sencillo como abrir un fichero y escribir en él código html que queramos en él. Lógicamente aunque el programa este escrito en C# es facilmente portable a cualquier otro lenguaje.

    Saludos, DJK


 Versión para imprimir  Foros de consulta

 
Gracias! por Mundo
Respuesta recibida el [10/05/2007 04:35:24]
Chingon viejo!!! Habia llegado a un grado de frustración critico!

 
Y para crear varias hojas? por Raul
Respuesta recibida el [12/07/2007 07:19:03]
Se podria crear un archivo excel com este metodo pero que el archivo excel tenga 4 hojas y en cada hoja almaceno diferentes datos? please mandame un mail: ravpweb@hotmail.com

 
las 8 reinas por donovan
Respuesta recibida el [09/10/2007 05:24:35]
Como puedo hacer el programa de las 8 reinas en C# pero que el programa pregunte cuantas reinas quieres hubicar y que el programa las ubique 

 
No anda!!!!! por leo
Respuesta recibida el [11/12/2007 05:47:01]
no no no me anda ni a palo, te paso los errores que me da: 

Errores al cargar el diseñador. Los errores se citan a continuación. Algunos errores se pueden corregir volviendo a generar el proyecto, otros puede que requieran cambios en el código.

No se puede mostrar el diseñador para este archivo porque ninguna de las clases que contiene se pueden diseñar. El diseñador inspeccionó las siguientes clases en el archivo: Principal --- La clase base 'System.Object' no se puede diseñar. GenExcell --- La clase base 'System.Object' no se puede diseñar. Form1 --- La clase base 'System.Object' no se puede diseñar.
Ocultar

en System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
en System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
en Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
en System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)

Error 1 'Devjoker.Form1.Dispose(bool)': no se encontró ningún miembro adecuado que reemplazar C:\Documents and Settings\Abril y Gabriel\Configuración local\Datos de programa\Temporary Projects\WindowsApplication1\Form1.Designer.cs 14 33 WindowsApplication1
Error 2 El programa 'C:\Documents and Settings\Abril y Gabriel\Configuración local\Datos de programa\Temporary Projects\WindowsApplication1\obj\Release\WindowsApplication1.exe' tiene más de un punto de entrada definido: 'Devjoker.Principal.Main()' C:\Documents and Settings\Abril y Gabriel\Configuración local\Datos de programa\Temporary Projects\WindowsApplication1\Form1.cs 10 22 WindowsApplication1
Error 3 El programa 'C:\Documents and Settings\Abril y Gabriel\Configuración local\Datos de programa\Temporary Projects\WindowsApplication1\obj\Release\WindowsApplication1.exe' tiene más de un punto de entrada definido: 'WindowsApplication1.Program.Main()' C:\Documents and Settings\Abril y Gabriel\Configuración local\Datos de programa\Temporary Projects\WindowsApplication1\Program.cs 13 21 WindowsApplication1

 
Como leer desde .Net dicha fichero excel por Wafu
Respuesta recibida el [31/01/2008 08:55:04]
Muy bueno el artículo, pero podrías añadir como luego desde .net puedo leer dicha tabla y metarla en un datatable.

Gracias.

 
Lo máximo por DJ
Respuesta recibida el [03/02/2008 07:45:34]
Muchas gracias es un muy buen truco

 
Excelente, pero... y las multiples hojas? por Omar Chavez
Respuesta recibida el [20/02/2008 06:41:34]
Primero que nada, EXCELENTE! ... este artículo me alivianará mucho!.

Pero...

Ya preguntaron, no veo respuesta... URGE! ... como hacer que un archivo de EXCEL tenga multiples hojas con éste metodo!

Lo ocupo asi! :S ... cualquier solución omar_chavez@hotmail.com por favor!

De antemano, gracias!

 
para preguntar usar los foros por aldeamedia
Respuesta recibida el [21/02/2008 04:11:52]
Para preguntar usar los foros, no respondemos ni por email ni en los comentarios.

 
Amigo que puedo decirle, tan s... por Omar Daniel Peña
Respuesta recibida el [25/08/2008 08:11:46]
Amigo que puedo decirle, tan sólo un gracias, pero que Dios le bendiga, me ha sacado de un tenaz problema...

 
gracias por jhon
Respuesta recibida el [02/10/2008 09:54:14]
gracias amigo por compartir tus ejercicios de c#.


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

Generar un fichero Excel con C# sin tener Excel instalado
Autor: Pedro Herrarte Sánchez
Visitas: 11799 Fecha de publicación: 01/08/2006
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 302 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 137 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 101 | Comentarios: 5 | Archivo: Articulos
Categorias: TFS
Visitas: 429 | Comentarios: 4 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 1448 | Comentarios: 6 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 238 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 611 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 2573 | Comentarios: 4 | Archivo: Articulos
Categorias: C#
Visitas: 463 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 1072 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista

Útimos temas recibidos en los foros ...
Crystal reports XI Release 2 y asp.net por mvargas ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 con logo... por Moises ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 por Moises ... [C#] 0 21/11/2008
Cuestión de BFILE. por Megatron ... [ORACLE] 0 21/11/2008
Enviar email por Dol ... [ASP.NET] 5 21/08/2007
*******PREGUNTA********: por T.S.U.En Informatíca ... [Visual Basic 6.0] 5 17/03/2008
Programar tareas en oracle. por Rodrigo ... [ORACLE] 0 21/11/2008
fechas con datatimepicker por peyin ... [Visual Basic .NET] 3 20/11/2008
agregar datos de un gridview a un textbox por jhors ... [ASP.NET] 3 19/09/2007
Select de sql en c# por Stuart ... [C#] 1 20/11/2008
Manual en Español de SQL Navigator for Oracle por Maira ... [ORACLE] 12 30/03/2008
Como mandar mensaje a Celular por Pako ... [C#] 40 13/03/2007

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
22/10/2005 Componentes del lenguaje SQL    forma parte de...Tutorial SQL
04/11/2008 Fijar el encabezado de un GridView con ASP.Net y CSS
26/08/2007 Transacciones en Transact SQL    forma parte de...Tutorial de Transact SQL
21/07/2006 Funciones integradas de PL/SQL    forma parte de...Tutorial PL/SQL
19/09/2006 Recuperar datos BLOB de ORACLE
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL
22/10/2005 Vistas    forma parte de...Tutorial SQL
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
22/10/2005 Indices    forma parte de...Tutorial SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]