Foros del Web » Programación para mayores de 30 ;) » .NET »

Exportar datagridview a excel 2010

Estas en el tema de Exportar datagridview a excel 2010 en el foro de .NET en Foros del Web. Hola a todos tengo un pequeño problema que es el siguiente, lo que pasa es que quiero exportar un datagridview a excel 2010, tengo entendido ...
  #1 (permalink)  
Antiguo 27/01/2012, 08:31
 
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 3
Exportar datagridview a excel 2010

Hola a todos tengo un pequeño problema que es el siguiente, lo que pasa es que quiero exportar un datagridview a excel 2010, tengo entendido que para exportar un datagridview a excel 2003 se trabaja con Microsoft.Office.Interop.Excel Version 11.0 y para exportar a excel 2007 con Microsoft.Office.Interop.Excel Version 12.0. Por favor alguien que me pueda ayudar se lo agradeceré bastante, GRACIAS.
  #2 (permalink)  
Antiguo 27/01/2012, 19:04
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Exportar datagridview a excel 2010

Hola que tal, bueno yo como lo e hecho es con el iTextSharp, asi no importa tener la utileria del Office

Esto es lo que va en el boton de Exportar a Excel

Código C#:
Ver original
  1. private void BotExcel_Click(object sender, EventArgs e)
  2. {
  3.     try
  4.     {
  5.         ArrayList titulos = new ArrayList();
  6.         DataTable datosTabla = new DataTable();
  7.        
  8.         //Especificar ruta del archivo con extensión de EXCEL.
  9.         OtrosFormatos OF = new OtrosFormatos(Application.StartupPath+ @\\test.xls);
  10.  
  11.         //obtenemos los titulos del grid y creamos las columnas de la tabla
  12.         foreach (DataGridViewColumn item in dataGridView1.Columns)
  13.         {
  14.             titulos.Add(item.HeaderText);
  15.             datosTabla.Columns.Add();
  16.         }
  17.  
  18.         //se crean los renglones de la tabla
  19.         foreach (DataGridViewRow item in dataGridView1.Rows)
  20.         {
  21.             DataRow rowx = datosTabla.NewRow();
  22.             datosTabla.Rows.Add(rowx);
  23.         }
  24.  
  25.         //se pasan los datos del dataGridView a la tabla
  26.         foreach (DataGridViewColumn item in dataGridView1.Columns)
  27.         {
  28.             foreach (DataGridViewRow itemx in dataGridView1.Rows)
  29.             {
  30.                 datosTabla.Rows[itemx.Index][item.Index] = dataGridView1[item.Index, itemx.Index].Value;
  31.             }
  32.         }
  33.  
  34.         OF.Export(titulos, datosTabla);
  35.         Process.Start(OF.xpath);
  36.         MessageBox.Show("Proceso Completo");
  37.     }
  38.     catch (Exception ex)
  39.     {
  40.         MessageBox.Show(ex.Message);
  41.     }
  42. } //Fin del Evento Clic del Botón

Esta seria la clase que se encargaria de exportar:

Código C#:
Ver original
  1. public void ExportCSV(ArrayList titulos, DataTable datos)
  2.     {
  3.         try
  4.         {
  5.             FileStream fs = new FileStream(ruta, FileMode.Create,
  6.             FileAccess.ReadWrite);
  7.             w = new StreamWriter(fs);
  8.             string comillas = char.ConvertFromUtf32(34);
  9.             StringBuilder CSV = new StringBuilder();
  10.            
  11.             //Encabezados
  12.             for (int i = 0; i < titulos.Count; i++)
  13.             {
  14.                 if (i != (titulos.Count - 1))
  15.                 {
  16.                     CSV.Append(comillas + titulos[i].ToString() + comillas + ",");
  17.                 }
  18.                 else
  19.                 {
  20.                     CSV.Append(comillas + titulos[i].ToString() + comillas + Environment.NewLine);
  21.                 }
  22.             }
  23.  
  24.             // se generan datos
  25.             for (int i = 0; i < datos.Rows.Count; i++)
  26.             {
  27.                 for (int j = 0; j < datos.Columns.Count; j++)
  28.                 {
  29.                     if (j != (titulos.Count - 1))
  30.                     {
  31.                         CSV.Append(comillas + datos.Rows[i][j].ToString() + comillas + ",");
  32.                     }
  33.                     else
  34.                     {
  35.                         CSV.Append(comillas + datos.Rows[i][j].ToString() + comillas + Environment.NewLine);
  36.                     }
  37.                 }
  38.             }
  39.  
  40.             w.Write(CSV.ToString()); //se escribe la cadena en el archivo
  41.             w.Close();
  42.         }
  43.         catch (Exception ex)
  44.         {
  45.             throw ex;
  46.         }
  47.     } //Fin de ExportCSV

En la clase anexa esto:

Código C#:
Ver original
  1. StreamWriter w;
  2.     string ruta;
  3.     public string xpath { get { return ruta; } set { value = ruta; }}
  4.  
  5.     /// <summary>
  6.     /// Constructor que establece el path del archivo
  7.     /// </summary>
  8.     /// <param name="path"></param>
  9.     public OtrosFormatos(string path)
  10.     {
  11.         ruta = @path;
  12.     }

Yo con el que tengo un poco de problemas es con el open office, por que me toma la informacíon como si la quisiera exportar

espero te sirva
  #3 (permalink)  
Antiguo 27/01/2012, 20:29
 
Fecha de Ingreso: enero-2012
Ubicación: Perú
Mensajes: 4
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Exportar datagridview a excel 2010

Te dejo otra alternativa un poco más corta que yo utilizo

Código:
 protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {

        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        Page page = new Page();
        HtmlForm form = new HtmlForm();
        GridView1.EnableViewState = false;
        page.EnableEventValidation = false;
        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=NombreQueQuieresQueSalga.xls");
        Response.Charset = "UTF-8";
        Response.ContentEncoding = Encoding.Default;
        Response.Write(sb.ToString());
        Response.End();

    }
Donde Gridview1 es el datagridview que has creado.

Responde si te ayudó!

Saludos

Etiquetas: datagridview, excel
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




La zona horaria es GMT -6. Ahora son las 15:52.