Как читать метаданные из документов docx? - PullRequest
5 голосов
/ 13 марта 2012

Мне нужно получить шаблон текстового документа (docx), который будет содержать заголовок, имя автора, дату и т. Д.

Этот шаблон будет использоваться пользователями для его заполнения.Мне нужно создать AC # программу, которая возьмет в файл docx и прочитает всю интересующую информацию (название, имя, дата, ...).

Итак, мои вопросы:

  1. Как поместить метаданные в шаблон, говоря: это заголовок, дата, имя и т. Д.?(не программно)

  2. Как программно прочитать эту информацию?

Ответы [ 3 ]

8 голосов
/ 13 марта 2012

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

После вставки элементов управления вам нужно, чтобы у каждого из них было уникальное имя.Office позволит всем им иметь одно и то же имя, но вам нужно будет однозначно идентифицировать их все в вашем шаблонном документе.

Теперь вам нужно получить данные, которые вводятся в эти элементы управления.Опять же, вероятно, есть и лучшие решения, но у Эрика Уайта есть много отличных материалов OpenXML, и вот один из его: Перебор элементов управления контентом

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

Кроме того, вы, вероятно, захотите сохранить .docx из своего.файл doct, который, как мне кажется, в OpenXML не существует встроенного «однострочного» метода;однако вы можете создать новый документ Word, а затем записать поток файла шаблона во вновь созданный файл docx.Опять же, конечно, там могут быть лучшие решения.

Вы были здесь?Есть много хороших вещей: Введение в OpenXML

Кроме того, Эрик выпускает все больше и больше видео на канале OpenXML YouTube

7 голосов
/ 14 марта 2012

1) как поместить метаданные в шаблон, говоря: это заголовок, дата, имя и т. Д.?(не программно)

Это можно сделать на вкладке «Информация» в MS Word 2010, как показано ниже:

How to set manually the MS Word document properties like Author, Title, etc...

2) как это сделатьЯ программно читаю эту информацию?

После того, как вы создали свой документ (или шаблон), вы всегда можете заглянуть внутрь него с помощью инструмента повышения производительности Open XML SDK 2.0 (который устанавливается с OpenXML SDK ) чтобы увидеть, где (какие классы использовать), чтобы получить / установить некоторую информацию из / в документ.

Open XML SDK 2.0 Productivity Tool

Также я думаю, что этот пост может помочь вам решить вашу задачу: Добавление и обновление пользовательских свойств документа в формате docx


ОБНОВЛЕНИЕ:

Привет, Дейв,

Пожалуйста, ознакомьтесь с этой статьей MSDN - Извлечение свойств приложения из документов Word 2010 с помощьюOpen XML SDK 2.0

Надеюсь, это именно то, что вы ищете.

5 голосов
/ 14 марта 2012

Все документы OpenXML имеют встроенные основные метаданные, которые будут делать то, что вам нужно, через System.IO.Packaging. После того, как вы откроете файл word с помощью open xml sdk в c #, вы сможете получить эти значения через класс PackageProperties . Вы можете использовать 11 объектов.

Вы «поощряете» своего пользователя вводить метаданные с помощью информационной панели документа Word (DIP).

enter image description here Вы можете включить это по умолчанию, когда они открывают ваш шаблон, с помощью настройки на панели инструментов разработчика для шаблона. См. следующую статью о том, как установить это в своем шаблоне.

Я написал быстрое приложение для Windows Form, которое отображает эту информацию с помощью вызова open xml sdk для PackageProperties файла Word, показанного выше.

enter image description here

Вот полное решение с включенным файлом образца слова.

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

...