У меня есть окно WPF (с использованием C# в качестве кода позади), который имеет некоторые текстовые поля.
Что я хочу, когда пользователь нажимает кнопку печати, я хочу взять информацию об этих полях и использовать шаблон Microsoft Word 2003. В шаблоне есть несколько пустых полей, заполняемых этой информацией, поступающей из вдовы WPF.
Как я могу автоматизировать слово для этого?Как автоматизировать Microsoft Word 2003 из WPF?
ответ
Это очень просто:
Добавить ссылку COM к "в Microsoft Word библиотеки 11,0 Object" (или использовать сборку Microsoft.Office.Interop.Word). Возможно, вам придется установить Visual Studio Tools для Office System и/или перейти к первичной сборке Interop, в зависимости от версий VS.NET и Office и того, что еще вы установили.
Создайте объект приложения Word.Application
var app = new Word.Application()
Откройте документ с
var doc = app.Documents.Open(...)
. Обратите внимание, что в C# 3.5 или ниже вы должны передать все параметры. Вы можете использовать переменную, инициализированную для System.Reflection.Missing.Value для большинства из них.Итерация doc.Fields с помощью Еогеаспа: чтение и разбор
.Code
диапазона данного поля, а затем обновить.Result
диапазон поля в расчете на содержании текстового поля.
Например:
foreach(Field f in doc.Fields)
if(f.Code.Text.Contains("lastName"))
f.Result.Text = this.LastName;
...
это предполагает, что контекст данных класса есть DependencyProperty "LastName", который связан с XAML, как это:
<TextBox Text="{Binding LastName}" />
Что вы делаете это из окна WPF не имеет значения. Кодекс должен делать всю автоматизацию. Ниже приведены некоторые ресурсы, которые могут помочь вам с инструкциями или примерами:
Обратите внимание, что это не рекомендуется делать на сервере. Я знаю, что ваше требование для Wpf, но это может привести к вовлечению в проект Silverlight.
КСТАТИ: Использование COM-объектов немного сложнее, чем обычные объекты .NET и Office COM объекты подавно:
Обратите внимание на его первоначальное заявление:
Object oMissing = System.Reflection.Missing.Value()
Object oTrue = true;
Object oFalse = false;
Это потому, что все параметры метода являются параметрами «ref», поэтому вы не можете передавать обычные константы, null
, true
и false
.
Automation Samples Using Managed Code (Visual Basic or Visual C#)
Полный список образцов автоматизации.
@profK Спасибо –
- 1. Как вызвать макрос в Microsoft Word 2003
- 2. Как экспортировать стили из файла Microsoft Word 2003 .dot?
- 3. Как преобразовать документ из Latex в Microsoft Word 2003?
- 4. Стилирование Microsoft Word Word
- 5. Создать документ Word 2003
- 6. Установка плагина Word 2003 на сервере 2003
- 7. Как перерисовать меню Word 2003
- 8. VBA Microsoft Word 2003 + MsgBox и изменения в .doc-файле
- 9. Совместимость библиотеки объектов Microsoft Word с 2007 по 2003 год
- 10. Преобразование Word 6.0 в Word 2003 Programatically
- 11. Автоматизация Microsoft Word с Python.Net
- 12. Как автоматизировать экспорт из Access 2007 в Excel 2003
- 13. Как получить позицию прокрутки из Microsoft Word
- 14. Как вставить в Outlook из Microsoft Word
- 15. Как удалить разрывы страниц из Microsoft Word?
- 16. Как удалить гиперссылки из документа Microsoft Word?
- 17. как удалить несколько строк из Microsoft Word
- 18. Диалоговое окно VBA Word 2003
- 19. Word 2003 Template - экономия документа
- 20. Универсальный анализатор документов Microsoft Word без установки Word
- 21. Как отключить макросы в Office Word 2003?
- 22. Word автоматизировать текст нижнего колонтитула
- 23. Как автоматизировать неинтерактивные тесты на Microsoft Surface
- 24. Как получить значение после чтения определенного слова из Microsoft Word?
- 25. Как автоматизировать сценарий Pyspark в Microsoft Azure
- 26. Зависимость: Microsoft Word?
- 27. Как ограничить экземпляр Microsoft Word?
- 28. Microsoft Access 2003 SQL-запрос
- 29. xml: space = "сохранить" в документе Word 2003
- 30. Microsoft Access 2003 - Expression Builder
Отличный ответ.Он появился, когда я все еще сочинял мои, поэтому я принял мои рекомендации по кодированию в знак уважения к вашим и просто сохранил ссылки на примеры. – ProfK
@ Ray Burns: спасибо, у меня есть шаблонный документ с умножением Quick part и content control, но в 'doc.Fields.Count' равен 0. Как получить поля в documnet? –