Foros del Web » Programando para Internet » ASPX (.net) »

Exportar a excel C# (sin librerias office)

Estas en el tema de Exportar a excel C# (sin librerias office) en el foro de ASPX (.net) en Foros del Web. Hola a todos... Lo que necesito hacer es exportar a excel una gridview desde una página, y que en el reporte aparezca el logo de ...
  #1 (permalink)  
Antiguo 04/08/2009, 06:40
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 1 mes
Puntos: 2
Exportar a excel C# (sin librerias office)

Hola a todos...

Lo que necesito hacer es exportar a excel una gridview desde una página, y que en el reporte aparezca el logo de la empresa. Y descargar el reporte.

Esto lo debo hacer con C# pero sin ocupar las librerías de office, =S nunca lo he hecho sin las librerías de office...
por favor si alguien puede ayudarme con esto lo agradecería mucho, sé que se puede hacer...

Gracias!

Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #2 (permalink)  
Antiguo 05/08/2009, 13:13
Avatar de Bellabys  
Fecha de Ingreso: abril-2009
Mensajes: 70
Antigüedad: 15 años
Puntos: 1
Respuesta: Exportar a excel C# (sin librerias office)

Para exportar a Ecxel SIN USAR LIBRERIAS la info de un Data Grid yo uso esto, espero te sirva:

En C#

Código HTML:
 protected void btExportar_Click(object sender, EventArgs e)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        System.IO.StringWriter sw = new System.IO.StringWriter(sb);
        System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
            
        Page page = new Page();
        HtmlForm form = new HtmlForm();
     
        GridView1.EnableViewState = false;

        // Deshabilitar la validación de eventos, sólo asp.net 2
        page.EnableEventValidation = false;

        // Realiza las inicializaciones de la instancia de la clase Page que requieran los diseñadores RAD.
        page.DesignerInitialize();

        page.Controls.Add(form);
        form.Controls.Add(GridView1);

        page.RenderControl(htw);

        Response.Clear();
        Response.Buffer = true;
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "attachment;filename=DATA.xls");
        Response.Charset = "UTF-8";
     // Response.ContentEncoding = Encoding.Default;
        Response.Write(sb.ToString());
        Response.End();
    }
En VB

Imports System.IO

Dim sb As StringBuilder = New StringBuilder()
Dim sw As StringWriter = New StringWriter(sb)
Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)
Dim pagina As Page = New Page
Dim form = New HtmlForm
grilla.EnableViewState = False
pagina.EnableEventValidation = False
pagina.DesignerInitialize()
pagina.Controls.Add(form)
form.Controls.Add(grilla)
pagina.RenderControl(htw)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=data.xls")
Response.Charset = "UTF-8"
Response.ContentEncoding = Encoding.Default
Response.Write(sb.ToString())
Response.End()

Saludos!!
__________________
---***Hay que saber escuchar antes de opinar***---
  #3 (permalink)  
Antiguo 06/08/2009, 11:04
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Exportar a excel C# (sin librerias office)

Muchas Gracias Bella por tu respuesta!

Tengo otra pregunta, ojalá la puedas resolver...

Con tú código se exporta a excel la grdiview, sale un cuadrito de dialogo y dice si quieres abrir, guardar o cancelar... al presionar abrir, se abre la hoja excel en el mismo explorador de internet... sabes de alguna opción para que al presionar abrir se abra en el programa excel?

Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #4 (permalink)  
Antiguo 10/08/2009, 10:47
Avatar de Bellabys  
Fecha de Ingreso: abril-2009
Mensajes: 70
Antigüedad: 15 años
Puntos: 1
Respuesta: Exportar a excel C# (sin librerias office)

Hola

Respondiendo a tu pregunta, el código que postee, cuando le das abrir, lo habre en Excel automáticamente, entonces creo que podría estar en la configuración del Explorador o en la parte donde se configura que dependiendo de la extensión del archivo se abre én cierto programa, Checalo x ahí, la verdad es raro que lo abra en el Explorador como comentas por que el código si lo abre en directo en Excel.

Saludos!!
__________________
---***Hay que saber escuchar antes de opinar***---
  #5 (permalink)  
Antiguo 10/08/2009, 14:56
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Respuesta: Exportar a excel C# (sin librerias office)

También puedes crear excel usando el formato XML Office 2003, aquí te dejo un artículo que explica sobre eso y que brinda una libreria con proyecto para que veas el modo de uso:

http://www.dotnetpanama.com/dotnetpa...-XML-2003.aspx

Saludos,
  #6 (permalink)  
Antiguo 27/02/2012, 12:20
 
Fecha de Ingreso: febrero-2012
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Exportar a excel C# (sin librerias office)

Bellabys
ya puse el codico como tal pero no funciona a que se puede deber , no envia ningun error
  #7 (permalink)  
Antiguo 29/02/2012, 11:01
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Exportar a excel C# (sin librerias office)

Hola,

Quizas puedas probar esto...

protected void imgBtnExportar_Click(object sender, ImageClickEventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=DATA.xls");
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Write(HTML()); //Llamada al procedimiento HTML
Response.End();
}


public string HTML()
{
Page page1 = new Page();
HtmlForm form1 = new HtmlForm();

GridView1.EnableViewState = false;
if (GridView1.DataSource != null)
{
GridView1.DataBind();
}

GridView1.EnableViewState = false;
page1.EnableViewState = false;

page1.Controls.Add(form1);
form1.Controls.Add(GridView1);

System.Text.StringBuilder builder1 = new System.Text.StringBuilder();
System.IO.StringWriter writer1 = new System.IO.StringWriter(builder1);
HtmlTextWriter writer2 = new HtmlTextWriter(writer1);

writer2.Write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>Datos</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n<style>\n</style>\n</head>\n<body>\n");
writer2.Write("</br></br></br></br></br></br></br></br></br></br></br></br><img src=http://10.252.196.115:8080/TME/Galeria/Atento/logo.gif width=13% height=10%>");
writer2.Write("<table><tr><td></td><td></td><td><font face=Arial size=5><center>REPORTE</center></font></td></tr></table><br>");
// writer2.Write("<table>\n<tr>\n<td></td><td class=TD width=35%><b>Fecha :</b></td><td width=65% align=left>" + System.DateTime.Now.ToString() + "</td>\n</tr>\n<tr>\n<td></td><td class=TD><b>Reporte:</b></td><td>" + ddlReporte.SelectedItem.ToString().Trim() + "</td>\n</tr>\n<tr>\n<td></td><td class=TD><b>Modulo:</b></td><td>" + Session["SCampana"].ToString().Trim() + "</td>\n</tr>\n<tr>n<td class=TD><b>Matricula:</b></td><td>" + ddlMatricula.SelectedItem.Trim() + "</td>\n</tr></table>\n<br><br>");

page1.DesignerInitialize();
page1.RenderControl(writer2);
writer2.Write("\n</body>\n</html>");
page1.Dispose();
page1 = null;
return builder1.ToString();
}
  #8 (permalink)  
Antiguo 12/06/2013, 20:42
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Exportar a excel C# (sin librerias office)

Hola que tal?, yo lo que estoy necesitando es que cuando haga este proceso NO se abra la ventana Abrir-Guardar-Cancelar, debo indicarle una ruta por codigo y que se guarde ahi. En definitiva el usuario no tiene ue elegir la ruta donde se va a guardar el archivo sino que tiene que ser interno por codigo. Alguna idea???. Gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:08.