Как добавить элемент управления содержимым в документ Word 2007 с помощью OpenXML

Я хочу создать документ Word 2007 без использования объектной модели. Поэтому я бы предпочел создать его с использованием открытого формата xml. До сих пор я был в состоянии создать документ. Теперь я хочу добавить в него элемент управления содержимым и сопоставить его с xml. Может ли кто-нибудь направить меня относительно того же???


person Anoop    schedule 04.12.2009    source источник


Ответы (2)


Ануп,

Вы сказали, что можете создать документ с помощью OpenXmlSdk. Исходя из этого предположения, вы можете использовать следующий код для создания элемента управления содержимым, который будет добавлен к элементу Wordprocessing.Body вашего документа.

//praragraph to be added to the rich text content control
Run run = new Run(new Text("Insert any text Here") { Space = StaticTextConstants.Preserve });
Paragraph paragraph = new Paragraph(run);

SdtProperties sdtPr = new SdtProperties(
        new Alias { Val = "MyContentCotrol" },
        new Tag { Val = "_myContentControl" });
SdtContentBlock sdtCBlock = new SdtContentBlock(paragraph);
SdtBlock sdtBlock = new SdtBlock(sdtPr, sdtCBlock);

//add this content control to the body of the word document
WordprocessingDocument wDoc = WordprocessingDocument.Open(path, true); //path is where your word 2007 file is
Body mBody = wDoc.MainDocumentPart.Document.Body;
mBody.AppendChild(sdtBlock);

wDoc.MainDocumentPart.Document.Save();
wDoc.Dispose();

Я надеюсь, что это отвечает на часть вашего вопроса. Я не понял, что вы подразумеваете под «отобразить в XML». Вы хотели сказать, что хотите создать CustomXmlBlock и добавить к нему ContentControl?

person Bijay Kusle    schedule 11.12.2009
comment
Спасибо за ответ!! Хотя у меня уже есть хорошая статья в MSDN, в которой также объясняется сопоставление XML... msdn .microsoft.com/en-us/library/dd469465.aspx - person Anoop; 14.12.2009
comment
В OpenXML SDK 2 псевдоним теперь называется SdtAlias. - person Chris Rae; 19.09.2016

Найдите набор инструментов Word Content Control Toolkit на сайте www.codeplex.com.

Вот очень краткое объяснение того, как сделать то, что вы пытаетесь сделать.

  1. Вам необходимо иметь доступ к вкладке разработчика на ленте Word. Чтобы заставить это работать, нажмите «Офис» (круглая штука) в верхнем левом углу и выберите «Параметры Word» в нижней части меню. На первой странице параметров есть флажок для отображения панели инструментов разработчика.

  2. Используйте панель инструментов разработчика, чтобы добавить элементы управления содержимым, которые вы хотите на странице. Нажмите кнопку свойств в разделе «Элементы управления содержимым» на панели разработчика и задайте свойства имени и тега (я придерживаюсь того, чтобы называть поля имени и тега одним и тем же именем).

  3. Сохраните и закройте документ Word.

  4. Откройте набор инструментов управления содержимым, а затем откройте свой документ с помощью набора инструментов. Используйте левую руку, чтобы создать пользовательский XML для ссылки на ваши элементы управления.

  5. Теперь используйте представление привязки, чтобы перетащить сопоставления между вашим пользовательским XML и пользовательскими элементами управления, которые отображаются на правой панели инструментария.

  6. Вы можете использовать openxml sdk 1.0 или 2.0 (все еще в ctp), чтобы открыть документ Word в коде и получить доступ к пользовательскому файлу xml, который содержится как часть документа Word.

Если вы хотите посмотреть, как ваш текстовый документ выглядит как xml. Сделайте копию документа Word, а затем переименуйте его в «a.zip». Дважды щелкните zip-файл, а затем перейдите к структуре папок. Основное содержимое документа Word хранится в папке Word в файле с именем «document.xml». Пользовательская xml-часть документа хранится в папке customXml и обычно находится в файле с именем «item1.xml».

Я надеюсь, что это краткое объяснение поможет вам начать работу.

person Andrew    schedule 07.12.2009