Hallo
ich würde gerne eine Tabelle aus einer Datenbank ausdrucken. Kann mir jemand sagen, wie ich das am einfachsten lönste könnte?
ich bin mal auf diesen Link gestossen, wo man eine DataGrid printen kann, aber da ist der code sehr aufwendig.. ist dies die einzige Lösung?
greetz
Torkel
hallo zusammen
ich habe nochmals eine Frage betreffend meines Posts...
was ist einfacher und schneller zu implementieren.
1.ein DataGridView ausdrucken
1.ein DataGridView exportieren, z.b in eine Excel-Tabelle
greetz
Torkel
Einfacher und schneller... das kann man jetzt so pauschal nicht sagen. Es ist immer der Code, den man schon kennt, einfacher und schneller umzusetzen als Code, den man noch nie geschrieben hat. Soll heißen: wenn du schon mal in Excel exportiert hast, dann mach das jetzt auch so. Ungedreht - wenn du schon mal gedruckt hast, dann würde ich das jetzt wieder machen.
Ansonsten, wenn beides neu ist, würde ich beides mal ausprobieren. Hat den Vorteil, dass du zwei neue Techniken kennenlernst und so besser vergleichen kannst.
Ich persönlich würde die View drucken - aber das ist mein Geschmack 🙂
Original von torkel
Kann mir jemand sagen, wie ich das am einfachsten lönste könnte?
Reporting Services oder Crystal Reports?
Ich mußte selber vor kurzem eine Tabelle drucken und exportieren und ich kann nur sagen, das es einfacher ist eine Tabelle zu exportieren...
Denn beim Export mußt du nicht drauf achten, ob deine Tabelle auf eine Seite passt oder nicht... Der Export ist also ziemlich easy 😁
Du könntest z.B. auch den Tabelleninhalt einfach in die Zwischenablage tun und der Anwender muss dann halt selbst den Inhalt in Excel oder so einfügen. Ansonsten gibt es unter codeproject.com ein Beispiel wie du eine XLS-Datei erstellst...
ciao Anke
HI hurricane
kannst du mir ein paar Tips geben, wie ich ein DataSet oder GridView exportieren könnte? oder einfach nur die Daten printen?
mfg
torkel
Hallo Torkel,
zum exportieren brauchst du nur deine Zeilen durchlaufen und dir jeweils die Daten in eine Variable schreiben. Zwischen den Zeilen verwendest du als Trennzeichen einen Tabulator (oder Semikolon o.ä.) und am Zeilenende fügst du einen Zeilenumbruch ein.
Dann speichert du das ganz in einer CSV-Datei.
Drucken ist dann schon etwas schwieriger... Da findet man aber ein schönes Beicpiel bei CodeProject 😉
ciao Anke
HI...
ja, was ist am einfachsten? Exportieren und dann drucken oder direkt drucken? hast du mir den link zu diesem beispiel? ich habe auch welche aus c-sharpcorner.com gefunden, aber mit denen bringe ich es nicht zum laufen.
grüsse
Hab hier noch was PrintTable.cs bitte anschauen vom Projekt
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
und hier ein kleines demo zum printen eines Datagrids:
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hmm ich finde den Artikel nicht mehr, bin mir aber recht sicher das der von www.codeproject.com war...
Habe hier was gefunden, was man mal probieren müßte:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cscon/html/vclrfCodePrintingDataGridVisualC.asp
Wäre super wenn es so einfach wäre! Kann das jetzt aber gerade nicht testen...
Ansonsten sieht das hier nicht schlecht aus:
http://www.c-sharpcorner.com/Graphics/DataGridPrinterMG.asp
ciao Anke
Hallo
ich habe es jetzt mit diesem Code von der msdn versucht. folgendes habe ich eingefügt:
using System.Drawing.Printing; //print
using System.Drawing; //print
this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new Point(0, 0), this.Size));
this.InvokePaint(GridView1, myPaintArgs);
}
protected void Button1_Click(object sender, EventArgs e)
{
printDocument1.Print();
}
wenn ich es jetzt ausführe, bekomme ich diesen Fehler:
The type or namespace name 'PaintEventArgs' could not be found (are you missing a using directive or an assembly reference?)
'admin' does not contain a definition for 'InvokePaint'
kann mir da jemand weiterhelfen? habe ich denn eine using vergessen? diese beiden habe ich ja drinnen!!
greetz
torkel
Dann scheinst Du nicht die richtige Klasse benutzt zu haben um dies einzubinden.
Schon mal versucht in der Hilfe nach PaintEventArgs zu suchen?
Oder InvokePaint?
Hey,
hast du eventuell vergessen, die System.Windows.Forms.dll einzubinden und
using System.Windows.Forms;
oberhalb des namespaces zu definieren???
greets george
Hallo Leute.
Das wäre auch erst meine Frage, wie ich die Tabelle ausdrücken kann?
Nach lange Suche und Überlegungen bin ich zu Ergebnis gekommen, dass Crystal Report am einfachsten geht. Ich will aber nicht die gesamte Tabelle drücken sondern mit DataView Daten filtern und in eine andere Tabelle abspeichern und dann von der Tabelle Crystal Report erstellen. Allerdings weiss ich nicht, wie man Daten aus DataView Filterung in eine Tabelle reinquetschen kann. Wäre sehr Nett, wenn jemand auf mein Beitrag antwortet.
MfG
Also es handelt sich hier um eine web-applikation, nicht um eine windowsform.
greetz
@Torkel:
also wie bzw. ob das bei Webanwendungen geht, kann ich dir leider nicht sagen, ich habe das nur bei Windowsanwendnungen gemacht.
Ich werde aber nachher mal versuchen dieses Beispiel mit Invoke zuverwenden, denn mich interessiert jetzt echt mal was dort passiert 😉
@vitalinka:
Du musst eine Abfrage auf deinen DataView machen, und dann die Einträge in eine neue DataTable einlesen. Vielleicht geht es auch anderes, aber ich habe das noch nicht gemacht und da ist dies hier das erst was mir einfällt... (ungetestet)
DataRow[] rows = dataView.Select("irgendwas"...);
// Struktur der alten DataTable klonen
DataTable newTable = oldTable.Clone();
// Ergebnis der Abfrage auf den DataView durchlaufen
foreach(DataRow myRow in rows)
{
// Hier muss eine Kopie der aktuellen Zeile "myRow" in eine neue DataTable
// mit der selben Struktur der alten DataTable eingefügt werden
// eventuell geht das mit newTable.Rows.Add(myRow.Copy()); oder ähnliches
}
ich wie gesagt nicht getestet aber so ungefähr müßte es gehen...
Hey,
@huricane, vitalinka
im Originalthread von vitalinka:
DataView ->DataTable
habe ich mal ein Codebeispiel reingepackt.
greets george
@Torkel:
Warum sagst Du das nicht?
ASP.NET erzeugt lediglich HTML-Seiten die durch einen Browser angezeigt werden.
Der ist auch für das Drucken zuständig.
Oder du erzeugst eine PDF-Datei, die dann gedruckt werden kann.
Du selbst kannst nicht auf den drucker zugreifen.
Vielleicht solltest Du mal die Grundlagen erlesen.