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

|
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
|
Visitas:
137
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
101
|
Comentarios:
5
|
Archivo:
Articulos
|
Visitas:
429
|
Comentarios:
4
|
Archivo:
Articulos
|
Visitas:
1448
|
Comentarios:
6
|
Archivo:
Articulos
|
Visitas:
238
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
611
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
2573
|
Comentarios:
4
|
Archivo:
Articulos
|
Visitas:
463
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
1072
|
Comentarios:
0
|
Archivo:
Articulos
|
|
|
|
 |
| Encuesta |
|
¿A que perfil te adaptas mejor? |
|
|
|
|
|
|
|
|
 |