Hi zusammen, wie kann ich mit C#, in der "settings.xml" einer docx-Datei, in den Mail Merge Settings (w:mailMerge (MailMerge)) die Query (w:query (Query)) verändern?
Die Query ist das einzigste was ich gerne, in einer Methode mit übergabewerten, anpassen würde.
Beispiel:
public void GenerateDocument(string dateipfad, String key1, String key2) { WordprocessingDocument myDoc = WordprocessingDocument.Open(dateipfad,true); Query myQuery = new Query() { Val = "SELECT * FROM \"Test\" WHERE \"name\"="+key1+" And \"lastname\"="+key2 }; new MailMerge().Append(myQuery); myDoc.Close(); }
Wobei der dateipfad die zu editierende docx-Datei ist und keys die werte für die Query enthält.
[Edit] Beispiel erweitert. Würde das so funktionieren?
An Deinem Beispiel fällt zunächst mal auf, dass die Erzeugung der Query und des MailMerge quasi "im leeren Raum" stattfinden - sie haben keinerlei aus dem Code ersichtliche Verbindung zu myDoc, weshalb es mich auch sehr wundern würde, wenn auf diese Weise irgendwas am Dokument verändert würde.
public void GenerateDocument(string dateipfad, String key1, String key2) { using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(dateipfad, true)) { var settingsPart = wordDocument.MainDocumentPart.GetPartsOfType<DocumentSettingsPart>().First();
var mailMerge = settingsPart.Settings.GetFirstChild<MailMerge>(); mailMerge.Query = new Query() { Val = "SELECT * FROM \"Test\" WHERE \"name\"="+key1+" And \"lastname\"="+key2 }; } }
Ab der Zeile, wo in dem Artikel Settings.OfType<MailMerge>() aufgerufen wird, habe ich das Beispiel verändert, denn die OfType-Methode habe ich in der MSDN-Doku nicht gefunden.
Wahrscheinlich ist das noch keine funktionierende Lösung, aber ich hoffe, es hilft Dir zumindest weiter.