2009-02-18 19 views
14

Soy bastante nuevo en .NET y C#, pero tengo un DataGridView que me gustaría imprimir. ¿Cuál sería la mejor manera de hacerlo?Imprimir .NET DataGridView

+0

@Simon ¡Gracias por agregar más etiquetas! : o) –

Respuesta

3

Puede exportar DataGridView a Excel y luego imprimirlo desde Excel.

También podría considerar no mostrar sus datos en un DataGridView, pero mostrarlos en un control ReportViewer, que tiene la capacidad de exportar a PDF o Excel. Desde allí es posible imprimir sus datos.

+0

@Bliek ¡Gracias por la sugerencia! Como mencioné en otro comentario, me gustaría intentar mantener este control por ahora ... ¡pero lo tendré en cuenta! –

+0

Terminé haciendo esto, después de todo. Todavía visualizo mis datos en DataGridView, pero si el usuario elige imprimirlos, uso un Visor de informes. ¡Gracias de nuevo! –

3

No me temo que haya soporte de impresión incorporado.

Puede recurrir al uso de un control de terceros como el Infragistics WinGrid que tiene soporte incorporado para la impresión.

+0

@Gerrie Schenck ¡Gracias por el enlace! Creo que por ahora seguiré presionando para tratar de usar el control actual, pero lo tendré en cuenta ¡en caso de que lo necesite! –

2

.NET Los controles WinForm (como la vista de cuadro de datos) no son compatibles de forma nativa con la impresión.

En el caso del datagridview, puede llamar a 'DrawToBitmap', y luego tomar ese mapa de bits y pasarlo a las funciones de impresión para producirlo en papel.

+0

@GWLlosa ¡Gracias! Esto funciona y puedo imprimir mi cuadrícula, pero sale como una captura de pantalla. Tenía la esperanza de poder formatearlo en algo un poco más amigable. ¿Pensamientos? –

+0

Si quiere volver a formatear la forma en que se ve, o necesita volver a formatear el control antes de la llamada, o realmente 'construir su propio' datagridview en el código de dibujo, usando los datos en las filas y celdas para poblarlo. Se desordena rápidamente. – GWLlosa

8

Hay proyectos en CodeProject que han hecho algún trabajo imprimiendo DataGridViews.

+0

@Bob ¡Gracias! Trataré de implementar esto ahora ... –

+1

+1 por un gran recurso. – SoftwareGeek

1

Si va a imprimir algo más que DataGridViews, puede que valga la pena seguir un enfoque más genérico. Usamos MigraDoc y luego escribimos nuestra propia clase para leer DataGridViews y generar clases MigraDoc que representan una tabla.

Hay muchos grandes paquetes de impresión disponibles, pero solo tengo experiencia con MigraDoc.

Editar:

En respuesta a los comentarios, aquí hay un enlace a mi sitio que muestra el código que he creado para generar tablas MigraDoc y un ejemplo de su uso para mostrar un DataGridView (DataGridView to MigraDoc tables).

+0

Hola. ¿Puedes compartir algunos ejemplos de código que usan Migradoc con DataGridViews? – edosoft

+0

Actualicé mi respuesta con un enlace. ¡Espero que esto ayude! –

10

Añadir un DataGridView, un PrintDocuemnt, y un botón a continuación:

button click events { 
    printDocument1.Print(); 
} 

printDocument1_PrintPage events { 
    Bitmap bm = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height); 
    this.dataGridView1.DrawToBitmap(bm, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height)); 
    e.Graphics.DrawImage(bm, 0, 0); 
} 

Eso es todo lo que su impresión de datos.

+1

Es muy fácil e impresionante. Muchísimas gracias. – Sagotharan

+0

+1 por una forma decente y elegante ... Me encanta :) – coder

+1

No estoy seguro de lo que me falta, pero esto genera bastantes errores. Estoy usando visual studio 13 y C#. –

5

Sé que ya ha aceptado una respuesta, pero para la siguiente persona para buscar esta pregunta ...

también encontré este maravilloso proyecto de código del proyecto, y justo en práctica. Fue FÁCIL y agradable. http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx

+1

¡Gracias por continuar! : o) –

1

Me gusta este método http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx Pero, ¿hay alguna manera de que pueda elegir la impresora.

Quiero imprimir automáticamente al final de un proceso. Así que planeo elegir esto como opciones 1, así que siempre puedo imprimir en la impresora predeterminada. Y otra opción como elegir la impresora y luego imprimir. Así que en total 2 ptint funcionan en total. Responda.Saludos

4

En CodeProject:

Another DataGridView Printer by aureolin

arriba es otra excelente DataGridView impresora que es extremadamente fácil de implementar.

Me doy cuenta de que soy Johnny Come Lately en este hilo. Me encontré con esto mientras buscaba otra cosa, pero quería hacer referencia a esta excelente solución de impresión para otros que pasan por este camino (como yo lo hice).

Espero que alguien aquí se beneficie de ello.