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

guardar datagriedview como txt o en excel

Estas en el tema de guardar datagriedview como txt o en excel en el foro de .NET en Foros del Web. Hola, quisiera saber como puedo utilizar el componente savefiledialog, para guardar un datagriedview. agradecería la ayuda...
  #1 (permalink)  
Antiguo 31/05/2011, 09:36
 
Fecha de Ingreso: abril-2011
Ubicación: Bogotá
Mensajes: 52
Antigüedad: 13 años
Puntos: 0
guardar datagriedview como txt o en excel

Hola, quisiera saber como puedo utilizar el componente savefiledialog, para guardar un datagriedview.
agradecería la ayuda
  #2 (permalink)  
Antiguo 31/05/2011, 09:48
Avatar de giovani_loera  
Fecha de Ingreso: mayo-2011
Ubicación: Tijuana
Mensajes: 225
Antigüedad: 13 años
Puntos: 21
Respuesta: guardar datagriedview como txt o en excel

Este metodo, toma como parametros un dataSet y donde se guardara el archivo.
El metodo recorreo las tablas del DataSet, primero pone el nombre a las hojas y despues va poniendo las columnas.
Una vez esto empezara agreagar los datos por cada DataTable del DataSet creara una hoja en el Excel.

al ultimo de agregar los campos, le pondra tamaño a las columnas.

Código C#:
Ver original
  1. private bool CreateExcel(DataSet dsData, string saveBook)
  2.         {
  3.             xlApp=new Excel.Application();            
  4.             xlWorkBook = xlApp.Workbooks.Add(misValue);
  5.             try
  6.             {
  7.                 int index = 1;
  8.                 foreach (DataTable dt in dsData.Tables)
  9.                 {
  10.                     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(index);
  11.                     xlWorkSheet.Name = dt.TableName;
  12.  
  13.                     for (int col = 0; col < dt.Columns.Count; col++)
  14.                     {
  15.                         string colName = Convert.ToChar(65 + col).ToString() + "1";
  16.                         chartRange = xlWorkSheet.get_Range(colName, colName);
  17.                         chartRange.FormulaR1C1 = dt.Columns[col].ColumnName;
  18.                         chartRange.Font.Color = System.Drawing.Color.Black;
  19.                         chartRange.Interior.Color = System.Drawing.Color.FromArgb(128, 128, 128).ToArgb();
  20.                         chartRange.Borders.LineStyle = System.Windows.Forms.BorderStyle.FixedSingle;
  21.                        
  22.                     }
  23.                     for(int row=0; row<dt.Rows.Count;row++)
  24.                     {
  25.                         for (int col = 0; col < dt.Columns.Count; col++)
  26.                         {
  27.                             xlWorkSheet.Cells[row + 2, Convert.ToChar(65 + col).ToString()] = dt.Rows[row][col].ToString();
  28.                             if (eventProcess != null)
  29.                                 eventProcess();
  30.                         }
  31.                     }
  32.                     chartRange = xlWorkSheet.get_Range("A1", Convert.ToChar(65 + dsData.Tables[index-1].Columns.Count).ToString() + (dsData.Tables[index-1].Rows.Count+1).ToString());
  33.                     chartRange.Columns.AutoFit();
  34.                     index++;
  35.                 }
  36.                 xlWorkBook.SaveAs(saveBook, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue,misValue, misValue,
  37.                     Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
  38.                 return true;
  39.             }
  40.             catch(System.Runtime.InteropServices.COMException)
  41.             {
  42.                 return false;
  43.             }
  44.             finally
  45.             {
  46.                 xlWorkBook.Close(false, misValue, misValue);
  47.                 xlApp.Quit();
  48.                 this.ReleaseObject(xlWorkBook);
  49.                 this.ReleaseObject(xlApp);
  50.             }
  51.         }



Espero que te Sirva
  #3 (permalink)  
Antiguo 31/05/2011, 09:51
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 11 meses
Puntos: 49
Respuesta: guardar datagriedview como txt o en excel

Que tal manueltibaduiza, puedes hacerlo de esta forma utilizando esta función que exporta el contenido de tu DataGridView a un excel:
Código vb:
Ver original
  1. Public Sub ExportToExcel(ByVal Dt As DataTable, ByVal Path As String)
  2.         On Error Resume Next
  3.         Dim excelApplication As Excel.Application = New Excel.Application
  4.         Dim excelWorkbook As Excel.Workbook = CType(excelApplication.Workbooks.Add(System.Reflection.Missing.Value), Excel.Workbook)
  5.         Dim excelSheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
  6.  
  7.         For i As Integer = 0 To Dt.Columns.Count - 1
  8.             CType(excelSheet.Cells(1, i + 1), Excel.Range).Value2 = Dt.Columns(i).ColumnName
  9.         Next i
  10.  
  11.         excelSheet.Range(excelSheet.Cells(1, 1), excelSheet.Cells(1, Dt.Columns.Count)).Font.Bold = True
  12.         excelSheet.Range(excelSheet.Cells(1, 1), excelSheet.Cells(1, Dt.Columns.Count)).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
  13.         For i As Integer = 0 To Dt.Rows.Count - 1
  14.             excelSheet.Cells.Range(excelSheet.Cells(i + 2, 1), excelSheet.Cells(i + 2, Dt.Columns.Count)).Value2 = Dt.Rows(i).ItemArray
  15.         Next i
  16.  
  17.         Dim tmp As String
  18.         tmp = excelSheet.Cells.Range(excelSheet.Cells(2, 1), excelSheet.Cells(2, 1)).Value2.ToString()
  19.         If Path <> vbNullString Then
  20.             excelWorkbook.Close(True, Path, Nothing)
  21.  
  22.             System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWorkbook)
  23.             System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication)
  24.             excelWorkbook = Nothing
  25.             excelApplication = Nothing
  26.  
  27.             MessageBox.Show("El Archivo fue exportado satisfactoriamente " + Path, "Exportación de Archivos", MessageBoxButtons.OK, MessageBoxIcon.Information)
  28.             Process.Start(Path)
  29.         Else
  30.             MessageBox.Show("Debe seleccionar la ubicación donde guardar el archivo", "Exportación de Archivos", MessageBoxButtons.OK, MessageBoxIcon.Information)
  31.             Exit Sub
  32.         End If
  33.     End Sub

Y en un Boton o donde quieras haces esto habiendo agregado un control SavaFileDialog a tu diseño:
Código vb:
Ver original
  1. Dim ruta As String
  2. Me.SavaFileDialog1.Filter = "Todos los Archivos (*.*)|*.*|Archivos Excel 95-97 (*.xls)|*.xls|Archivos Excel 2000-2003 (*.xls)|*.xls|Archivos Excel 2007 (*.xlsx)|*.xlsx"
  3. Me.SavaFileDialog1 .ShowDialog()
  4. ruta = Me.SavaFileDialog1.FileName
  5. Call ExportToExcel(Me.TUGRID.DataSource, ruta)


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #4 (permalink)  
Antiguo 31/05/2011, 10:03
 
Fecha de Ingreso: abril-2011
Ubicación: Bogotá
Mensajes: 52
Antigüedad: 13 años
Puntos: 0
Respuesta: guardar datagriedview como txt o en excel

Cita:
Iniciado por Carlojas Ver Mensaje
Que tal manueltibaduiza, puedes hacerlo de esta forma utilizando esta función que exporta el contenido de tu DataGridView a un excel:
Código vb:
Ver original
  1. Public Sub ExportToExcel(ByVal Dt As DataTable, ByVal Path As String)
  2.         On Error Resume Next
  3.         Dim excelApplication As Excel.Application = New Excel.Application
  4.         Dim excelWorkbook As Excel.Workbook = CType(excelApplication.Workbooks.Add(System.Reflection.Missing.Value), Excel.Workbook)
  5.         Dim excelSheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
  6.  
  7.         For i As Integer = 0 To Dt.Columns.Count - 1
  8.             CType(excelSheet.Cells(1, i + 1), Excel.Range).Value2 = Dt.Columns(i).ColumnName
  9.         Next i
  10.  
  11.         excelSheet.Range(excelSheet.Cells(1, 1), excelSheet.Cells(1, Dt.Columns.Count)).Font.Bold = True
  12.         excelSheet.Range(excelSheet.Cells(1, 1), excelSheet.Cells(1, Dt.Columns.Count)).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
  13.         For i As Integer = 0 To Dt.Rows.Count - 1
  14.             excelSheet.Cells.Range(excelSheet.Cells(i + 2, 1), excelSheet.Cells(i + 2, Dt.Columns.Count)).Value2 = Dt.Rows(i).ItemArray
  15.         Next i
  16.  
  17.         Dim tmp As String
  18.         tmp = excelSheet.Cells.Range(excelSheet.Cells(2, 1), excelSheet.Cells(2, 1)).Value2.ToString()
  19.         If Path <> vbNullString Then
  20.             excelWorkbook.Close(True, Path, Nothing)
  21.  
  22.             System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWorkbook)
  23.             System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication)
  24.             excelWorkbook = Nothing
  25.             excelApplication = Nothing
  26.  
  27.             MessageBox.Show("El Archivo fue exportado satisfactoriamente " + Path, "Exportación de Archivos", MessageBoxButtons.OK, MessageBoxIcon.Information)
  28.             Process.Start(Path)
  29.         Else
  30.             MessageBox.Show("Debe seleccionar la ubicación donde guardar el archivo", "Exportación de Archivos", MessageBoxButtons.OK, MessageBoxIcon.Information)
  31.             Exit Sub
  32.         End If
  33.     End Sub

Y en un Boton o donde quieras haces esto habiendo agregado un control SavaFileDialog a tu diseño:
Código vb:
Ver original
  1. Dim ruta As String
  2. Me.SavaFileDialog1.Filter = "Todos los Archivos (*.*)|*.*|Archivos Excel 95-97 (*.xls)|*.xls|Archivos Excel 2000-2003 (*.xls)|*.xls|Archivos Excel 2007 (*.xlsx)|*.xlsx"
  3. Me.SavaFileDialog1 .ShowDialog()
  4. ruta = Me.SavaFileDialog1.FileName
  5. Call ExportToExcel(Me.TUGRID.DataSource, ruta)


Saludos.


Gracias amigo por tu respuesta, pero tengo un problema y me dice que los tipos Excel.Application Excel.Workbook no se encuentran definidos.
  #5 (permalink)  
Antiguo 31/05/2011, 10:09
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 11 meses
Puntos: 49
Respuesta: guardar datagriedview como txt o en excel

Debes agregar la referencia a la libreria de Excel desde tu aplicación e importarla antes de la función que te publique:
Código vb:
Ver original
  1. Imports Excel = Microsoft.Office.Interop.Excel



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #6 (permalink)  
Antiguo 31/05/2011, 10:14
 
Fecha de Ingreso: abril-2011
Ubicación: Bogotá
Mensajes: 52
Antigüedad: 13 años
Puntos: 0
Respuesta: guardar datagriedview como txt o en excel

uchas gracias, amigo Carlojas me fue de gran ayuda

Etiquetas: excel, txt
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 12:12.