Visual Basic.NET - Filtrar Datagridview

 
Vista:
sin imagen de perfil

Filtrar Datagridview

Publicado por anonymous (99 intervenciones) el 24/08/2016 19:15:56
Hola a todos los expertos:
Voy a exportar a excel datos de un datagridview. todo bien ya lo logré.
Ahora quiero filtrar los datos de ESE DATAGRIDVIEW. son alumnos por grupo y ya estan todos en una hoja de excel, pero lo que no logro es poner en una hoja de excel a los alumnos de "3º D", en otra hoja a los alumnos de ·3º C· y asi sucecivamente. este es mi codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Function GridAExcel(ByVal ElGrid As DataGridView) As Boolean
	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
		exLibro = exApp.Workbooks.Add
		exHoja = exLibro.Worksheets.Add()
		Dim NCol As Integer = ElGrid.ColumnCount
		Dim NRow As Integer = ElGrid.RowCount
		For i As Integer = 1 To NCol
			exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name     '''aqui pone un nombre muy extendido...
		Next
		exApp.Application.Visible = True
												'''' aqui voy a poner una matriz con los grupos
		For Fila As Integer = 0 To NRow - 1
			For Col As Integer = 0 To NCol - 1
				If ElGrid.Rows(Fila).Cells(1).Value = "3º D" Then   'aqui INTENTO FILTRAR por GRUPO
					exHoja.Cells.Item(Fila + 2, Col + 1) = ElGrid.Rows(Fila).Cells(Col).Value
				End If
				Fila = Fila + 1                   ' aqui intento PASAR A LA SIGUIENTE FILA del DATAGRIDVIEW
			Next
		Next
		exHoja.Rows.Item(1).Font.Bold = 1
		exHoja.Rows.Item(1).HorizontalAlignment = 3
		exHoja.Columns.AutoFit()
		exHoja.Name = "3º D"
		exHoja = exLibro.Worksheets.Add()
		exHoja.Activate()
		exHoja.Name = "3º C"
		exHoja = Nothing
		exLibro = Nothing
		exApp = Nothing
 
	Catch ex As Exception
		MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
		Return False
	End Try
 
	Return True
 
End Function

Alguien que me de una luz? por cierto en los nombres de columna me pone en todas: "NombreDataGridViewTextBoxColumn" asi en todas cuando es solo "NOMBRE"
GRACIAS por su gran ayuda, se los agradezco.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtrar Datagridview

Publicado por Miguel (476 intervenciones) el 24/08/2016 21:23:55
Hola,

Voy a tratar de darte una idea para solucionar esto:

- Realiza una copia/clon de todas las filas del DataGridView

- Ordena las filas clonadas utilizando el método "Sort" con la columna 'grupo' (index 1 creo).

- Crea los objetos para el Excel

- Como las filas estarán ordenadas por la columna 'grupo' basta con recorrer las filas (con el For/Next), comparar el valor del grupo con el último grupo; si no es el mismo que el anterior crear otra hoja y asignársela a la variable de la hoja (exHoja) que estará fuera del For/Next.

En cuanto a los nombres de las columnas, utiliza la propiedad "HeaderText", no es lo mismo que "Name".


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar Datagridview

Publicado por Milton (3 intervenciones) el 24/08/2016 21:43:38
Hola,
Creo que lo mejor es que filtres el datagridview, usando el dataview, y luego pasas el datagridview a la funcion que tenes.
este ejemplo es de:
http://vb.net-informations.com/datagridview/vb.net_datagridview_sort.htm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Imports System.Data.SqlClient
Imports System.ComponentModel
Public Class Form1
    Dim ds As New DataSet
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim connectionString As String = "Data Source=.;Initial Catalog=pubs;Integrated Security=True"
        Dim sql As String = "SELECT title_id,title,type,pub_id FROM Titles"
        Dim connection As New SqlConnection(connectionString)
        Dim dataadapter As New SqlDataAdapter(sql, connection)
        connection.Open()
        dataadapter.Fill(ds, "Titles_table")
        connection.Close()
 
        DataGridView1.DataSource = ds.Tables(0)
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim dv As DataView
        dv = New DataView(ds.Tables(0), "type = 'business' ", "type Desc", DataViewRowState.CurrentRows)
        DataGridView1.DataSource = dv
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DataGridView1.Sort(DataGridView1.Columns(1), ListSortDirection.Ascending)
    End Sub
End Class

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Filtrar Datagridview

Publicado por anonymous (99 intervenciones) el 25/08/2016 23:56:56
Gracias Miguel y Milton.
Voy a intentar sus sugerencias espero que me funcionen, luego comento. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar