Добавление customXML-части в Word - PullRequest
       8

Добавление customXML-части в Word

0 голосов
/ 03 сентября 2018

Я пытаюсь добавить пользовательскую часть XML в Word. Я сгенерировал модель XML, которая связывает все мои данные в файле Word. Вот как я пытаюсь его заполнить, но ничего не добавляется:

public void FeedCustomXmlParts(MyModel model, string xmlns)
{
    var ser = new XmlSerializer(typeof(MyModel), xmlns);
    using (var ms = new MemoryStream())
    {
        ser.Serialize(ms, model);
        CustomXmlPart partLabel = GetCustomXmlPart(_wordDoc.MainDocumentPart, xmlns);
        ms.Position = 0;
        partLabel.FeedData(ms);
        ms.Flush();
    }
}

private static CustomXmlPart GetCustomXmlPart(MainDocumentPart mainDocumentPart, string targetNs)
{
    if (mainDocumentPart == null)
    {
        throw new ArgumentNullException(nameof(mainDocumentPart));
    }

    return (from part in mainDocumentPart.CustomXmlParts
        let xElement = part.GetXDocument().Root
        where xElement != null
        let ns = xElement.GetDefaultNamespace()
        where ns == targetNs
        select part).FirstOrDefault();
}

Что я делаю не так?

1 Ответ

0 голосов
/ 05 сентября 2018

По вашему описанию я понимаю, что вы хотите добавить в слово пользовательские части XML.

В следующем примере кода добавляется пользовательская часть XML к указанному документу.

    private void AddCustomXmlPartToActiveDocument(Word.Document document)
{
    string xmlString =
        "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
        "<employees xmlns=\"http://schemas.microsoft.com/vsto/samples\">" +
            "<employee>" +
                "<name>Karina Leal</name>" +
                "<hireDate>1999-04-01</hireDate>" +
                "<title>Manager</title>" +
            "</employee>" +
        "</employees>";

    Office.CustomXMLPart employeeXMLPart = document.CustomXMLParts.Add(xmlString, missing);
}

Для получения дополнительной информации см. Чтобы добавить пользовательскую часть XML в документ Word

Надеюсь, это поможет!

...