Как добавить провайдера настраиваемого поля в MS Word? - PullRequest
1 голос
/ 07 февраля 2011

Предисловие: Я хочу разрешить пользователям определять высококачественные шаблоны документов, а затем вводить туда данные из нашей информационной системы и распечатывать результаты. Я думаю, что MS Word - отличная отправная точка, потому что эта работа предназначена для деловых писем и т. Д., А не для отчетов о данных.

Вопрос. Можно ли добавить провайдера настраиваемого поля в MS Word?

У меня нет английского MS Word, поэтому я должен попытаться описать, что я имею в виду, в нескольких предложениях. Обычно мы можем вставить «поля», такие как имя автора, текущая дата и т. Д. Эти поля работают без проблем. Мы можем переключать вид полей между данными и определениями. Определение поля автора выглядит так: { AUTHOR \\* MERGEFORMAT }.

Теперь я хочу внедрить внешние данные в документы и позволить пользователю указать, куда их помещать. Пользователь должен определить шаблон документа и отметить места, в которые должны быть введены внешние данные. Поскольку пользователи Word, как правило, не являются ИТ-специалистами, для них проще всего использовать некоторые макросы или параметр «вставить поле». Поэтому я хочу определить свой собственный набор полей и подключить Word к своему настраиваемому полю и поставщику данных. Как это сделать? Я не могу найти какую-либо документацию по этому вопросу.

Я думаю, что этот подход лучше, чем использование соединения с базой данных sql или что-то подобное, потому что я хочу позволить внешнему источнику определять список известных полей и их значений, а не сам документ docx. Кроме того, источником данных на самом деле не будет база данных sql.

Ответы [ 3 ]

3 голосов
/ 11 февраля 2011

Безусловно, это именно тот сценарий, для которого были созданы элементы управления содержимым и пользовательские элементы XML (только в Word 2007/2010, но не в более раннем формате .doc).

Большая часть Word Developer Center homeстраница имеет дело с этими двумя: Контент Контроля и CustomXMLParts.Если вы пойдете по этому пути, вы найдете Word Content Control Toolkit также бесценным ресурсом, особенно когда только начинаете.

С точки зрения конечного пользователя, это может быть какпросто, просто создавая кнопки на ленте для вставляемых элементов управления контентом через шаблон или надстройку документа (VSTO или VBA).

2 голосов
/ 11 февраля 2011

Да, вы можете сделать это, используя пользовательские свойства документа в качестве заполнителей, а затем использовать некоторый код VBA, чтобы установить для этих свойств то, что вы хотите. Вы можете получить данные через ODBC, электронную таблицу Excel или текстовый файл.

Прежде всего, поэкспериментируйте вручную, зайдя в File, Properties и создав несколько пользовательских свойств. Задайте им значение, а затем в документе вставьте несколько полей DocProperty. Если вы не можете найти DocProperty в языковой версии Word, просмотрите список полей, например Author и т. Д. Поскольку имена полей видны конечным пользователям, возможно, они были переведены.

Затем, чтобы завершить шаблон документа, создайте функцию VBA, которая использует SetProperty. Прочтите эту статью для получения более подробной информации. Вам решать, будет ли VBA запущен при открытии файла или вы добавите пункт меню для этого.

Нет необходимости в специальных элементах управления или каких-либо коммерческих дополнениях. Я собираюсь добавить тег VBA к вашему вопросу, так как это действительно вопрос программирования VBA. Фактически это стало возможным начиная с Word for Windows 1.0.

Использование SetProperty в VBA теперь немного сложнее. Я получил следующий фрагмент кода из этого сообщения на форуме.

object docProps = wdDoc.CustomDocumentProperties; Тип docPropsType = docProps.GetType (); object Prop = docPropsType.InvokeMember ("Элемент", BindingFlags.Default | BindingFlags.GetProperty, null, docProps, новый объект [] {propName}); Тип PropType = Prop.GetType (); PropType.InvokeMember ( "Item", BindingFlags.Default | BindingFlags.SetProperty, null, docProps, новый объект [] {propName, propValue});

0 голосов
/ 08 февраля 2011

Если вы хотите получить достаточно приличное готовое решение, посмотрите отчеты Windward.

Да, название звучит как инструмент отчетности, но в действительности это именно то, что вы описываете.У них есть дополнение Word, которое позволяет пользователям легко размечать слово документ с полями, которые будут вставлены из вашего источника данных.

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

...