Ich bin ziemlich neu in .NET und C#, aber ich habe ein DataGridView, das ich gerne drucken möchte. Was wäre der beste Weg, dies zu tun?Drucken eines .NET DataGridView
Antwort
Sie können DataGridView nach Excel exportieren und dann aus Excel drucken.
Sie könnten auch in Betracht ziehen, Ihre Daten nicht in einem DataGridView anzuzeigen, sondern in einem ReportViewer-Steuerelement anzuzeigen, das in PDF oder Excel exportiert werden kann. Von dort ist es möglich, Ihre Daten zu drucken.
@Bliek Danke für den Vorschlag! Wie ich schon in einem anderen Kommentar erwähnt habe, würde ich gerne versuchen, bei dieser Kontrolle zu bleiben ... aber ich werde es mir merken! –
Ich habe das letztendlich doch getan. Ich zeige meine Daten immer noch in der DataGridView an, aber wenn der Benutzer es ausdruckt, verwende ich einen Report Viewer. Danke noch einmal! –
Es gibt keine integrierte Druckunterstützung, fürchte ich.
Sie können auf die Verwendung eines Drittanbieter-Steuerelements zurückgreifen, z. B. Infragistics WinGrid, das über integrierte Unterstützung für das Drucken verfügt.
@Gerrie Schenck Danke für den Link! Ich denke für den Moment dränge ich weiter, um zu versuchen, die aktuelle Kontrolle zu verwenden, aber ich werde dies im Kopf behalten, wenn ich es brauche! –
.NET WinForm-Steuerelemente (wie der Datagridview) werden nicht nativ unterstützt, gedruckt zu werden.
Im Falle der Datagridview können Sie jedoch 'DrawToBitmap' aufrufen, und dann diese Bitmap übernehmen und an die Druckfunktionen übergeben, um sie auf Papier zu erzeugen.
@GWLlosa Danke! Das funktioniert und ich kann mein Raster drucken, aber es sieht wie ein Screenshot aus. Ich hatte gehofft, dass ich es etwas freundlicher gestalten könnte. Gedanken? –
Wenn Sie die Art und Weise, wie es aussieht, neu formatieren möchten, müssen Sie entweder das Steuerelement selbst vor dem Aufruf neu formatieren oder eine eigene Datagridview im Zeichencode erstellen, wobei die Daten in den Zeilen und Zellen verwendet werden. Wird schnell unordentlich. – GWLlosa
Es gibt Projekte auf CodeProject, die einige Arbeit DataGridViews gedruckt haben.
@Bob Danke! Ich werde versuchen, dies jetzt zu implementieren ... –
+1 für eine große Ressource. – SoftwareGeek
Wenn Sie mehr als nur DataGridViews drucken möchten, kann es sinnvoll sein, einen allgemeineren Ansatz zu verfolgen. Wir benutzen MigraDoc und schreiben dann unsere eigene Klasse, um DataGridViews zu lesen und MigraDoc-Klassen auszugeben, die eine Tabelle darstellen.
Es gibt viele großartige Druckpakete, aber ich habe nur Erfahrung mit MigraDoc.
Edit:
In Reaktion auf die Kommentare, hier ist ein Link zu meiner Seite den Code zeigt ich für die Erzeugung MigraDoc Tabellen erstellt und ein Beispiel es der Verwendung eines Datagridview (DataGridView to MigraDoc tables) angezeigt werden soll.
Hallo dort. Können Sie einige Codebeispiele freigeben, die Migradoc mit DataGridViews verwenden? – edosoft
Meine Antwort wurde mit einem Link aktualisiert. Hoffe das hilft! –
ein Datagridview hinzufügen einen PrintDocuemnt, und ein Button dann:
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);
}
Das ist alles Druck Ihrer Daten ist.
Es ist sehr einfach und fantastisch. Vielen vielen Dank. – Sagotharan
+1 für anständige und elegante Art und Weise ... Ich liebe es :) – coder
Nicht sicher, was ich vermisse, aber das erzeugt ein paar Fehler. Ich benutze Visual Studio 13 und C#. –
Ich weiß, Sie haben bereits eine Antwort akzeptiert, aber für die nächste Person, um diese Frage zu suchen ...
Ich fand auch dieses wunderbare Projekt auf Code Project, und es gerade umgesetzt. Es war einfach und nett. http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx
Vielen Dank für das Hinzufügen! :O) –
Ich mag diese Methode http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx Aber gibt es eine Möglichkeit, wie ich den Drucker wählen kann.
Ich möchte am Ende eines Prozesses automatisch drucken. Also plane, dies als Optionen 1 zu wählen, damit ich immer auf Standarddrucker drucken kann. Und eine andere Möglichkeit, den Drucker zu wählen und dann zu drucken. Also insgesamt 2 ptint Funktion in allen. Bitte antworten Sie. Prost
Auf CodeProject:
Above ist ein weiterer hervorragender DataGridView
Drucker, die extrem einfach zu implementieren ist.
Ich weiß, ich bin ein Johnny Come Lately zu diesem Thema. Ich stolperte darüber, während ich nach etwas anderem suchte, wollte aber auf diese ausgezeichnete Drucklösung für andere verweisen, die auf diese Weise geschehen (wie ich).
Ich hoffe, dass jemand hier etwas Nutzen daraus bekommt.
@Simon Vielen Dank für das Hinzufügen weiterer Tags! : o) –