通过.NET与Word交互

时间:2011-07-06 19:56:39

标签: .net matlab ms-word ms-office office-interop

经过几分钟的实验,我回答了自己的问题(见下文)。当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 documentation on MSDN表明Unit参数是WdUnits枚举,我在MATLAB的Microsoft.Office.Interop.Word.WdUnits.wdCell找到了它。

我的问题是我找不到Extend参数所需的WdMovementType枚举。我想使用wdExtend值,但我找不到它。根据{{​​3}},它应该在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 个答案:

答案 0 :(得分:3)

我使用以下内容检查Word程序集中的枚举:

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

结果包括:

 'Microsoft.Office.Interop.Word.WdMovementType'

所以我想我会尝试访问它,即使它没有出现在MATLAB的选项卡完成中。奇怪的是,现在出现之后访问它!我想它一直都在那里。

答案 1 :(得分:1)

我建议您下载最新的Word 2010程序集。 您可以从microsoft.com下载它们 How to: Install Office Primary Interop Assemblies