Вопрос

У меня есть шаблон в формате word (.docx) и я хочу заменить некоторые заполнители в этом шаблоне моими собственными данными, вы знаете, где я могу найти подходящие классы для этого проекта?Мне было бы неплохо знать пространство имен.Существуют ли какие-либо более новые классы для обработки документов word в формате docx (xml), чем классы com?Спасибо вам за все ваши ответы, я надеюсь, что кто-нибудь сможет помочь мне с моей проблемой.

приветствует

Себастьян

Это было полезно?

Решение

Новые форматы office (docx, xlsx и т.д.) Представляют собой zip-файлы, содержащие коллекцию xml-файлов.Имея это в виду, у вас есть пара подходов.

  1. Вы можете использовать Open XML SDK, расположенный по адресу http://www.microsoft.com/downloads/details.aspx ?Идентификатор семейства=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046 и displaylang=ru

  2. Вы можете разархивировать файл docx, выполнить поиск и замену своих токенов и заархивировать его обратно.

Есть веб-сайт по адресу openxmldeveloper.org это как раз для такого рода вещей.Кроме того, имейте в виду, что они уже отправляют бета-версию 2 SDK.

Другие советы

Эрик Уайт затронул именно эту тему в статья в блоге с подробным описанием программы, предназначенной для проверки исходных фрагментов, встроенных в файлы DocX.Помимо этой статьи, я настоятельно рекомендую прочитать его серию статей о Office Open XML и C#.

Я использовал этот:

IEnumerable test2 = из элемента в теле.Элементы() где элемент.Внутренний текст.Содержит("sdt") выберите элемент;

Кстати, используя xml, я нашел это решение, которое находит ВСЕ sdt-узлы

 NameTable nt = new NameTable();
        XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
        nsManager.AddNamespace("w", wordmlNamespace);

        XmlDocument xDoc = new XmlDocument();
        xDoc.Load(doc.MainDocumentPart.GetStream());

        XmlNodeList nodeList = xDoc.SelectNodes(@"./w:document/w:body//w:sdt", nsManager);

Это работает, но разве SDK 2.0 в формате Open XML не дает мне никаких шансов на это?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top