
imprimir datagrid
Publicado por luis (1 intervención) el 06/03/2017 19:14:04
hola soy nuevo en el foro,
necesito imprimir un datagridview y en la impresión salgan las columnas y las filas con los margenes
este es mi código.
muchas gracias
necesito imprimir un datagridview y en la impresión salgan las columnas y las filas con los margenes
este es mi código.
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
yPos = topMargin + (count * printFont.GetHeight(e.Graphics))
e.Graphics.DrawString(texto, printFont, System.Drawing.Brushes.Black, 10, yPos)
' Dejamos una línea de separación
count += 2
While count < linesPerPage AndAlso f < DataGridView1.Rows.Count
row = DataGridView1.Rows(f)
texto = ""
For Each celda As System.Windows.Forms.DataGridViewCell In row.Cells
'Comprobamos que la celda tenga algún valor, en caso de
'permitir añadir filas esto es muy importante
If celda.Value IsNot Nothing Then
texto += vbTab + celda.Value.ToString()
End If
Next
' Calculamos la posición en la que se escribe la línea
yPos = topMargin + (count * printFont.GetHeight(e.Graphics))
' Escribimos la línea con el objeto Graphics
e.Graphics.DrawString(texto, printFont, System.Drawing.Brushes.Black, 10, yPos)
' Incrementamos los contadores
count += 1
f += 1
End While
yPos = topMargin + (count * printFont.GetHeight(e.Graphics))
e.Graphics.DrawString(texto, printFont, System.Drawing.Brushes.Black, 10, yPos)
' Dejamos una línea de separación
count += 2
'se agrego despues
Dim i As Integer = Nothing
' Recorremos las filas del DataGridView hasta que llegemos
' a las líneas que nos caben en cada página o al final del grid.
While count < linesPerPage AndAlso i < DataGridView1.Rows.Count
row = DataGridView1.Rows(i)
texto = ""
For Each celda As System.Windows.Forms.DataGridViewCell In row.Cells
' For f As Integer = 0 To DataGridView1.RowCount - 2
'Comprobamos que la celda tenga algún valor, en caso de
' permitir añadir filas esto es muy importante
If celda.Value IsNot Nothing Then
texto += vbTab + celda.Value.ToString()
End If
Next
' Calculamos la posición en la que se escribe la línea
yPos = topMargin + (count * printFont.GetHeight(e.Graphics))
' Escribimos la línea con el objeto Graphics
e.Graphics.DrawString(texto, printFont, System.Drawing.Brushes.Black, 10, yPos)
' Incrementamos los contadores
count += 1
i += 1
End While
' Una vez fuera del bucle comprobamos si nos quedan más filas
' por imprimir, si quedan saldrán en la siguente página
If i < DataGridView1.Rows.Count Then
e.HasMorePages = True
Else
' si llegamos al final, se establece HasMorePages a
' false para que se acabe la impresión
e.HasMorePages = False
' Es necesario poner el contador a 0 porque, por ejemplo si se hace
' una impresión desde PrintPreviewDialog, se vuelve disparar este
' evento como si fuese la primera vez, y si i está con el valor de la
' última fila del grid no se imprime nada
i = 0
End If
muchas gracias
Valora esta pregunta


0