Взаимодействие с Word через .NET - PullRequest
0 голосов
/ 06 июля 2011

После нескольких минут эксперимента я ответил на свой вопрос (см. Ниже).Я приму этот ответ, когда SO позволит мне через 2 дня.


Я использую функциональность MATLAB .NET для создания документа Word.Я хотел бы создать таблицу и объединить две верхние ячейки в левом столбце.Пока я могу создать таблицу:

NET.addAssembly('microsoft.office.interop.word');         %# Register Word assembly
wordApp = Microsoft.Office.Interop.Word.ApplicationClass; %# Create an instance of Word
wordDoc = wordApp.Documents;                              %# Get the object that handles documents
newDoc = wordDoc.Add;                                     %# Add a new document
wordApp.Visible = 1;                                      %# Make Word visible
selection = wordApp.Selection;                            %# Get the selection object to manage selected area
table = newDoc.Tables.Add(selection.Range, 3, 5);         %# Create a table
table.Style = 'Table Grid';                               %# Add grid lines

У меня проблемы с вызовом метода selection.MoveDown.Запуск METHODSVIEW в этом методе указывает следующие входные параметры:

  • Microsoft.Office.Word.Selection this
  • System.Object Unit
  • System.Object Count
  • System.Object Extend

Документация Selection.MoveDown для MSDN предполагает, что параметр Unit является перечислением WdUnits, которое я нашел в MATLABна Microsoft.Office.Interop.Word.WdUnits.wdCell.

Моя проблема в том, что я не могу найти перечисление WdMovementType, необходимое для параметра Extend.Я хочу использовать значение wdExtend, но не могу его найти.Согласно MSDN это должно быть в Microsoft.Office.Interop.Word.WdMovementType. Может кто-нибудь сказать мне, где найти wdExtend?

РЕДАКТИРОВАТЬ

WdMovementType фактически живет, где он должен, то есть Microsoft.Office.Interop.Word.WdMovementType.Теперь я получаю сообщение об ошибке при попытке запустить метод MoveDown:

>> selection.MoveDown(Microsoft.Office.Interop.Word.WdUnits.wdCell, 1, Microsoft.Office.Interop.Word.WdMovementType.wdExtend);
??? Message: Bad parameter
Source: Microsoft Word
HelpLink: C:\Program Files (x86)\Microsoft Office\Office12\1033\WDMAIN11.CHM#36888

Есть идеи, как правильно вызвать этот метод?

РЕДАКТИРОВАТЬ

При вызове MoveDown следует использовать значение wdLine для единиц измерения:

>> selection.MoveDown(Microsoft.Office.Interop.Word.WdUnits.wdLine, 1, Microsoft.Office.Interop.Word.WdMovementType.wdExtend);

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Я использовал следующее для проверки перечислений в сборке Word:

>> word = NET.addAssembly('microsoft.office.interop.word');
>> word.Enums

Результаты включали:

 'Microsoft.Office.Interop.Word.WdMovementType'

, поэтому я решил попробовать получить к нему доступ, даже если онне появился в закладке MATLAB.Как ни странно, после доступа к нему однажды он теперь появляется!Я предполагаю, что это было там все время.

1 голос
/ 06 июля 2011

Предлагаю вам скачать последнюю сборку для Word 2010. Вы можете скачать их с microsoft.com Как: установить основные сборки взаимодействия с Office

...