Kontrollkästchen im Worddokument aktivieren
-
Hallo,
nachdem wir gestern doch noch eine Lösung gefunden haben, wie die Textmarken im Worddokument zu füllen sind, stellt sich nun für uns die Frage für Kontrollkästchen (heißen die denn überhaupt so?).
Hier mal der bisherige Code
public static void ExportDataToWord(string m_number1, string m_number2, string m_number3) { Word.Application oWord = null; Word.Documents oDocs = null; Word.Document oDoc = null; Word.Bookmarks oBookmarks = null; // get word instance GetWordInstance(ref oWord); if (oWord != null) { oWord.Visible = true; oDocs = oWord.Documents; // open document object fileName = @"C:\\L0001V00.doc"; object readOnly = false; object isVisible = true; object oMissing = Type.Missing; oDoc = oDocs.Open(ref fileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); oDoc.Activate(); // fill bookmarks oBookmarks = oDoc.Bookmarks; InsertTextAtBookmark(ref oBookmarks, "number1", m_number1); InsertTextAtBookmark(ref oBookmarks, "number2", m_number3); InsertTextAtBookmark(ref oBookmarks, "number3", m_number2); } }
// method to find and fill bookmark public static void InsertTextAtBookmark(ref Word.Bookmarks oBookmarks, string name, string text) { Word.Bookmark oBookmark = null; Word.Range oRange = null; object oName = name; try { if (oBookmarks.Exists(name)) { oBookmark = oBookmarks.Item(ref oName); oRange = oBookmark.Range; oRange.Text = text; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
// create a word instance or returns an existing instance public static void GetWordInstance(ref Word.Application oWord) { oWord = null; // get active word instance try { oWord = (Word.Application)Marshal.GetActiveObject("Word.Application"); } catch { // create new word instance if (oWord == null) { try { oWord = new Word.Application(); } catch { } } } }
Soweit so gut, nur wissen wir nicht, wie der Wert auf checked = true/false gesetzt werden kann.
Einem Kontrollkästchen kann ja ebenfalls eine Textmarke zugewiesen werden, d.h. ansprechbar wäre das Kästchen - nur wie wird tatsächlich darauf zugegriffen?
-
Hat sich erledigt!
Hab selbst ne Lösung gefunden
object oFormField = "chk_m"; oDoc.FormFields.Item(ref oFormField).CheckBox.Value = true;
-
Nun gibt es doch noch eine Frage zum Export - ich möchte keinen neuen Thread eröffnen.
Hoffe Ihr könnt helfen:
Das Worddokument, in das die Daten exportiert werden sollen, beinhaltet mehrere Tabellen.Diese sollen natürlich auch befpllt werden.
1.) Was verwende ich dazu am besten? DataTable?
2.) Wie kann ich die jeweils richigt Tabelle ansprechen, um diese zu füllen?tbl.Cell(1, 1).Range.Text = "Document Property"; tbl.Cell(1, 2).Range.Text = "Value";
Wie weiße ich tbl die richtige Tabelle zu? Oder muss ich diese komplett neu erstellen?
-
Word.Application oWord = null; Word.Documents oDocs = null; Word.Document oDoc = null; Word.Bookmarks oBookmarks = null; Word.Table oTbl = oDoc.Tables[1];
So hab ich versucht auf die (1.???) Tabelle zuzugreifen - jedenfalls hab ich es so in Beispielen gesehen.
Leider meckert der Compiler Indizierung mit [] kann nicht auf einen Ausdruck vom Typ "Word.Tables" angewendet werden.
Hat jemand eine Idee, wie man das umsetzen kann ... hab in dem Dokument vier Tabellen. Können diese dort belassen werden, oder bei jedem Aufruf neu erstellt und eingefügt werden?
-
Hello!
Ich nehme einfach nochmals meinen alten Beitrag her ...Die Daten für den Export sind in einer List<> ... diese durchlaufe ich mit einer for-Schleife.
D.h. für die Textmarke "audit" gibt es manchmal mehrere Einträge.
Nun soll, nachdem InsertTextAtBookmark ausgeführt wurde, immer ein Zeilenumbruch gemacht werden, damit die Einträge untereinander stehen.Het jemand eine Idee, wie man das umsetzt?
oDocs = oWord.Documents; // Open document. object fileName = DirectoryFiles.OpenFile("WMF_02_V01"); object readOnly = false; object isVisible = true; object oMissing = Type.Missing; oDoc = oDocs.Open(ref fileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); oDoc.Activate(); // Fill bookmarks. oBookmarks = oDoc.Bookmarks; InsertTextAtBookmark(ref oBookmarks, name, value); oWord.Visible = true;