| 

.NET C# Java Javascript Exception

3
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?
News:
16.08.2011
DaTaBeRt 416 1 7
hmm, mein beispiel funkioniert so nicht. Es muss doch eine Lösung geben ... *searching* ...
DaTaBeRt 17.08.2011
1 Antwort
1
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.

Vielleicht hilft Dir Creating a MailMerge in C# with the OpenXML SDK weiter. Inspiriert davon würde ich mal folgendes probieren (ungetestet, hab grad kein VS zur Hand):

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.
17.08.2011
Matthias Hlawatsch 13,2k 4 9
Ok danke, ich hab das ganze jetzt anders umgesetzt. Hab aber das hier zum teil gestestet und das ist der richtige weg. :)
DaTaBeRt 25.08.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH