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





Новые офисные форматы (docx, xlsx и т. д.) Представляют собой zip-файлы, содержащие набор файлов xml. Имея это в виду, у вас есть несколько подходов.
Вы можете использовать Open XML SDK, расположенный по адресу http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=en
Вы можете разархивировать файл docx, выполнить поиск и заменить свои токены и заархивировать его.
Есть веб-сайт по адресу openxmldeveloper.org, который предназначен только для такого рода вещей. Также имейте в виду, что они уже поставляют бета-версию 2 SDK.
Эрик Уайт затронул именно эту тему в статья в блоге с подробным описанием программы, предназначенной для проверки исходных фрагментов, встроенных в файлы DocX.. Помимо этой статьи, я настоятельно рекомендую прочитать его серию статей о Office Open XML и C#.
Кстати, используя 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);
Это работает, но разве Open XML Format SDK 2.0 не дает мне на это шанса?
Я использовал вот этот:
IEnumerable test2 = from элемент в body.Elements () где element.InnerText.Contains ("sdt") выбрать элемент;
К вашему сведению, версия 2.0 Open XML SDK теперь доступна здесь: microsoft.com/downloads/…