Mr. Tommes Geschrieben 21. Dezember 2009 Geschrieben 21. Dezember 2009 Hallo zusammen, habe die Aufgabe bekommen ein C# Programm zu programmieren mit einer XML-Datei als Datenquelle. Im Programm werden Sachen in der XML-Datei geändert. Nun soll das Programm die Funktion haben, dass wenn ich auf einen Button drücke sollen die Daten aus der XML Datei in eine Word Formatvorlage .dot importiert werden. Hab aber leider gar keine Ahnung wie das funktionieren soll. Wäre echt über jeden Ansatz dankbar! Kann man es hin bekommen, dass ein ausgewählter Text in einer Tabelle in der Vorlage nach dem Import steht oder habe ich keinen Einfluss auf den "Ort" wo der Text in der Vorlage steht? Hoffe ich habe mich einigermaßen verständlich ausgedrückt. Nochmals: habe eine Word Formatvorlage und muss dort jetzt Text einbinden per C# Code. Geht das? Gruss Zitieren
.NETter Geschrieben 21. Dezember 2009 Geschrieben 21. Dezember 2009 Hallo, das mit Word ist kein großes Ding. Hier mal ein link für ein kleines Tutorial, was ich zum reinen Einstieg ganz passend finde: Tutorial Hier wird auch wie bei deiner Problemstellung ein Vorlage genutzt. Gruß, Thomas Zitieren
Rekon1602 Geschrieben 22. Dezember 2009 Geschrieben 22. Dezember 2009 Hallo Ich hab das in dem Tutorial mal auprobiert bei mir wird da ne exception gedroppt. Hier mein Code: (Die grüne stelle ist der Ort, wo die exception auftritt) Microsoft.Office.Interop.Word.ApplicationClass myWordApp = new ApplicationClass(); object Dateiname = "normal.dotx"; object neueVorlage = false; object DokumentenTyp = 0; object Sichtbar = true; [COLOR="Green"]Microsoft.Office.Interop.Word.Document doc = myWordApp.Documents.Add( ref Dateiname, ref neueVorlage, ref DokumentenTyp, ref Sichtbar);[/COLOR] myWordApp.Visible = true; doc.Activate(); Und hier die Exception: Dieses Dokument konnte von Word nicht gelesen werden. Es ist möglicherweise beschädigt. Versuchen Sie Folgendes: * Öffnen und reparieren Sie die Datei. * Öffnen Sie die Datei mit dem Wiederherstellen-Textkonverter. Woran kann das liegen??? Ich hab die Referenz auf die "Microsoft Word 12.0 Object Library" hinzugefügt. Kann das daran liegen, dass ich Office 07 drauf hab??? Heißt da des "normal.dot" evtl i-wie anders??? Zitieren
Gateway_man Geschrieben 22. Dezember 2009 Geschrieben 22. Dezember 2009 Welche assembly Version des Word Interops hast du denn gesetzt? Eigentlich ist der Fehler ja recht aussagekräftig. Das Doc File, auf das du refenzierst ist beschädigt. Zitieren
Rekon1602 Geschrieben 22. Dezember 2009 Geschrieben 22. Dezember 2009 Die Version is 8.4 Aber ich hab des etz schon an 2 rechnern versucht und an beiden gehts ned... schon ein bischen komisch... Zitieren
Gateway_man Geschrieben 22. Dezember 2009 Geschrieben 22. Dezember 2009 Meines Wissen must du bei Office 07 auf die Interop Assembly Version 12 verweisen. Zitieren
.NETter Geschrieben 22. Dezember 2009 Geschrieben 22. Dezember 2009 Ich habe das Tutorial ebenfalls mal nachgebaut und es funktioniert nicht :-) Aber mit einer kleinen Änderung bekommt man es doch zum Fliegen. Anstatt: object Dateiname = "normal.dotx"; Gib einfach den Pfad zur Vorlage mit an: object Dateiname = @"c:\Vorlage.dotx"; Bei mir hat es so funktioniert. Gruß, Thomas Zitieren
Mr. Tommes Geschrieben 29. März 2010 Autor Geschrieben 29. März 2010 Hallo, ich hab es auch getestet, funktioniert wunderbar bei mir. Jetzt hab ich aber ein anderes Problem, ich würde Word gerne RTF-formatierten Text übergeben. Quasi wo im Tutorial myWordApp.Selection.TypeText("C# Word Tutorial"); steht soll myWordApp.Selection.TypeText(this.richTextBox.Rtf); stehen. Leider zeigt mir Word dann Sachen wie {\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{ an. Er setzt die Formatierung quasi nicht um. Hat da jemand eine Idee? Ich würde gerne RTF Text an Word schicken, da ich auch Tabellen und Grafiken habe. Gruss Zitieren
TDM Geschrieben 30. März 2010 Geschrieben 30. März 2010 Hat da jemand eine Idee? Probier mal myWordApp.Selection.ShapeRange.RTF. Zitieren
Mr. Tommes Geschrieben 30. März 2010 Autor Geschrieben 30. März 2010 Hallo, danke für den Tip, leider weiss ich nicht wie ich das benutzen kann. myWordApp.Selection.ShapeRange.RTF ist ja eine Eigenschaft und keine Funktion wie myWordApp.Selection.TypeText("Hallo"); Könntest du mir vielleicht genauer erklären, wie ich das nutzen kann? Wär echt klasse. Danke und Gruss Zitieren
TDM Geschrieben 30. März 2010 Geschrieben 30. März 2010 Ich glaub das war eh ein Schuss in den Ofen. Probier Folgendes: /*Exemplarische rtb*/ RichTextBox myRTB = new RichTextBox(); myRTB.SelectAll(); myRTB.Copy(); //... myWordApp.Selection.Paste(); Zitieren
Mr. Tommes Geschrieben 31. März 2010 Autor Geschrieben 31. März 2010 Hi, so was hab ich mir auch schon überlegt. Danke für den Tip, hab's grade ausprobiert und es funktioniert gut! Ich glaube so kann ich es lassen Danke !!! Gruß Mr. Tommes Zitieren
Mr. Tommes Geschrieben 16. September 2010 Autor Geschrieben 16. September 2010 Hallo nochmal, habe eine weitere Frage zum Erstellen eines Word-Dokuments mit Hilfe von C#. Wie kann ich dem Dokument Dateiinfos mitgeben, sprich Titel, Autor, Betreff, Stichwörter, Kommentare? Halt die Meta-Daten die man sieht, wenn man mit der rechten Maustaste auf die Word-Datei klickt und Eigenschaften anwählt. Momentan sieht mein Code so aus: this.richTextBoxPrintCtrl1.SelectAll(); this.richTextBoxPrintCtrl1.Copy(); Microsoft.Office.Interop.Word.ApplicationClass myWordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); object Dateiname = SLV_Doku.Config.pathWordVorlage; if (this.tbFormatvorlage.Text.EndsWith(".dot")) { Dateiname = this.tbFormatvorlage.Text; } object neueVorlage = false; object DokumentenTyp = 0; object Sichtbar = true; Microsoft.Office.Interop.Word.Document aDoc = myWordApp.Documents.Add(ref Dateiname, ref neueVorlage, ref DokumentenTyp, ref Sichtbar); myWordApp.Selection.Paste(); myWordApp.Visible = true; aDoc.Activate(); Leider fehlen mir hier wie gesagt die "internen Infos". Wäre Klasse, wenn jemand ne Lösung kennen würde Gruss Thomas Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.