Output in Word oder Excel Datei kopieren
-
Okay, also ich sollte ein Programm für jemandem schreiben bei dem halt Bingo Spielblätter generiert werden. Das Programm läuft auch einwandfrei, allerdings wurde mir heute dann gesagt das er es gerne hätte das man es ausdrucken kann. Nun reicht aber nur das normale ausdrucken von dem Feld nicht aus, es müsste rein theoretisch vorher noch formatiert werden, allerdings hab ich ihm bereits gesagt das ich das wahrscheinlich nicht machen kann.
Trotzdem wäre halt meine Frage ob ich es in eine Word oder Excel Datei kopiert bekomme.
-
Als was liegen denn die Felder vor?
Text oder Grafik, welches Format?
Wie druckst du es bisher aus?Word kann man auch über COM fernsteuern. Mit VBA geht es doch einfacher.
Für jemanden, der Word oder Excel für so etwas missbraucht, kann es nicht kompliziert genug werden.
-
Selber drucken würde ich nicht, wenn das Programm ohnehin keine grafische Oberfläche hat und du dich erst einarbeiten müsstest, wäre es wohl zu viel Arbeit. Außerdem kann es später logischerweise nicht mehr angepasst werden.
Doc(x) bzw. xls(x)-Dateien direkt zu erstellen ist aber auch keine gute Idee. Warum erstellst du für Word nicht einfach eine durch Tabs getrennte Textdatei, für Excel eine csv-Datei (durch Kommata getrennte Werte). Alternativ gehts auch über die (Windows-) Zwischenablage.
In beiden Fällen kannst du anschließend eine Word- bzw. Exceldatei mit den entsprechenden Programmen erstellen und diese weitergeben.
-
Das ist nicht sinnvoll, weil csv-Dateien keine Formatierung enthalten!
Gerade bei Bingo wird man doch wohl eine Tabelle mit Rahmen etc. haben wollen. Außerdem müssen die Schriftarten von der Größe passen (Überschrift groß etc.). Von daher finde ich es gar nicht so problematisch, docx- oder xlsx-Dateien zu erzeugen. Mache ich selbst z.B. in ein einem Web-Projekt mit PHPExcel auch - genau aus dem Grund, dass ein gut aussehendes druckbares Dokument erzeugt wird, das der Benutzer auch noch bearbeiten kann (damit entfällt dann z.B. pdf).
Wie löst ihr denn sonst den Wunsch danach, etwas drucken zu können?
PS: csv liefern und irgendwo ein Excel-Makro haben, womit das csv danach formatiert wird, kann man Benutzern nicht zumuten. Das ist viel zu kompliziert, das bekommt kaum jemand hin. Noch dazu will niemand Makros haben.
-
Ich habe gute Erfahrungen mit SpreadsheedML genmacht. Ist einmal etwas Arbeit aber das Format ist gut dokumentiert und um Welten Einfacher als xls(x).
-
Was spricht denn gegen RTF?
-
DocShoe schrieb:
Was spricht denn gegen RTF?
Was spricht denn gegen HTML?
-
ASCII-Art müsste reichen, wenn man den Drucker zwingen kann monospaced zu drucken. Sollte mit Notepad gehen.
HTML oder SVG wäre so das nächste was ich mir vorstellen kann, ohne sich groß einarbeiten zu müssen.
Kommt ja darauf an, was es noch so für "Beiwerk" auf dem Ausdruck geben soll. Da kommen schnell Extrawünsche, sobald ein Schritt fertig ist.
Für alle anderen mächtigeren Formate braucht man aber schon eine Bibliothek, die einen unterstützt, und dann auch Einarbeitungszeit.
-
Hi,
per Programm Excel öffnen und die Daten dort eintragen. Exycedl lässt sich ziemlich gut fernsteuern.
Eventuell eine entsprechende Datei vorhalten (mit anderer Dateiendung) aus der die Aktuelle Exceldatei dann durch kopieren erstellt wird, bevor man da hineinschreibt.Gruß Mümmel
-
Wenn wirklich Rahmen, Überschriften etc. erforderlich sind, würde ich direkt selber drucken. xls und doc würde ich nicht selber erzeugen wollen, HTML ist zwar super geeignet für die Ausgabe auf Bildschirmen, weniger aber für die Druckerzeugung. RTF wäre zwar okay, aber in diesem Fall, wenn ohnehin nichts auf dem Bildschirm ausgegeben wird, ist der direkte Druck mindestens genauso einfach.
Das komplette WYSIWYG-Gedöns fällt unter den Tisch, die gewählten Standardeinstellungen der Drucker müssen ausreichend sein und mit xps oder PDF-Druckern (in Win 10 dabei) kann „kostenlos” herumprobiert werden.
Die Druckausgabe ist in diesem Fall auch besonders einfach, da man sich weder in spezielle Mappingmodi noch in Koordinatensysteme und Viewports der GDI einarbeiten muss.
Natürlich ist es so plattformabhängig, durch die Level 4 Druckerinfo werden auch nur Windowsversionen der Nt-Reihe unterstützt (Win 1.0 bis Me also nicht). Allerdings könnte das auch noch leicht geändert werden.HDC GetPrinterDC(int opt); bool StartDocument(HDC printerDC, const DOCINFOA& di); bool EndDocument(HDC printerDC); bool PrintPage(HDC printerDC, int frameNumX, int frameNumY, int blockX, int blockY /*, const DATA& pageData*/); // DrawPage wird jeweils für eine Seite aufgerufen, dies ist die einzige Funktion, die angepasst werden muss. void DrawPage(HDC printerDC, int pgeWidth, int pgeHeight, int frameNumX, int frameNumY, int blockNumX, int blockNumY/*, const DATA& pageData*/); int main() { DOCINFOA di = {sizeof (DOCINFOA), "Druck"}; //GetPrinterDC : 1 Standarddrucker, 2 erster Drucker, 3 Auswahl HDC printerDC = GetPrinterDC(3); if(printerDC && StartDocument(printerDC, di)) { // pageData müsste für jede Seite generiert werden (jeweils frameNumX x frameNumY Datenfelder) // DATA pageData; // .. // Nacheinander PrintPage aufrufen PrintPage(printerDC, 1, 1, 5, 5 /*, pageData*/); PrintPage(printerDC, 2, 4, 3, 3 /*, pageData*/); PrintPage(printerDC, 3, 3, 4, 4 /*, pageData*/); PrintPage(printerDC, 4, 4, 3, 3 /*, pageData*/); PrintPage(printerDC, 4, 6, 5, 4 /*, pageData*/); // ... EndDocument(printerDC); } DeleteDC(printerDC); }
Der Code ist hier zu finden.
Die Druckausgabe sieht zumindest nie schlecht aus, wenn man nicht auf Pixelbasis arbeitet, sondern eben nur mit der Breite und der Höhe des Ausgabegeräts. Dann ist es auch egal, ob auf DIN A2 horizontal oder auf einer Postkarte vertikal gedruckt wird.
Außerdem kann die Anzahl der Spiele pro Seite und damit die Größe (was für den typischen Bingospieler wohl auch wichtig ist) direkt angegeben werden (okay, das ginge mit Dateien natürlich auch).
Siehe gifs für horizontale Ausgabe und vertikale Ausgabe (automatisch sehr verkleinert miterzeugt -> schlechte Qualität).