CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Exportar solo columnas visibles de datagrid a Excel
(1/1)
pirlespi:
Buenas,
Tengo el siguiente código y funciona perfectamente, salvo que exporta todas las columnas de mi datagrid mientras que solo necesito que exporte las que son visibles.
¿alguno sabe como conseguirlo?
Gracias!
--- Código: --- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Creamos las variables
Dim exApp As New Microsoft.Office.Interop.Excel.Application
Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet
Try
'Añadimos el Libro al programa, y la hoja al libro
exLibro = exApp.Workbooks.Add
exHoja = exLibro.Worksheets.Add()
' ¿Cuantas columnas y cuantas filas?
Dim NCol As Integer = DataGridView1.ColumnCount
Dim NRow As Integer = DataGridView1.RowCount
'Aqui recorremos todas las filas, y por cada fila todas las columnas
'y vamos escribiendo.
For i As Integer = 1 To NCol
exHoja.Cells.Item(1, i) = DataGridView1.Columns(i - 1).Name.ToString
Next
For Fila As Integer = 0 To NRow - 1
For Col As Integer = 0 To NCol - 1
exHoja.Cells.Item(Fila + 2, Col + 1) = DataGridView1.Rows(Fila).Cells(Col).Value()
Next
Next
'Titulo en negrita, Alineado al centro y que el tamaño de la columna
'se ajuste al texto
exHoja.Rows.Item(1).Font.Bold = 1
exHoja.Rows.Item(1).HorizontalAlignment = 3
exHoja.Columns.AutoFit()
'Aplicación visible
exApp.Application.Visible = True
exHoja = Nothing
exLibro = Nothing
exApp = Nothing
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
End Try
End Sub
--- Fin del código ---
gerloxxx:
Intenta condicionar que si no es visible no lo mande
if not dataGridView1.Rows(x).Cells(y).Visible then
saludos
pirlespi:
Buenas Gerloxxx,
Como el usuario es quién decide los campos que se deben ocultar en el datagrid para no exportarse al excel marcándolos con checkboxes lo que he hecho ha sido eliminar las columnas que seleccionen y listo.
--- Código: --- If CheckBox1.Checked = False Then
Me.DataGridView1.Columns.Remove("columna_a_eliminar")
End If
--- Fin del código ---
Navegación
Ir a la versión completa