C#中的MS Word自动化 – 无法将类型为’System.String [*]’的对象转换为键入’System.String []’

我使用这个代码来获得MS Word 2007文档(.docx)中使用的String数组的标题
dynamic arr = Document.GetCrossReferenceItems(WdReferenceType.wdRefTypeHeading);

使用调试器,我看到arr动态地分配了一个String数组,其中包含文档中所有标题标题(约40个条目).到现在为止还挺好.

然后,我想访问字符串,但不管我怎么做,我得到以下异常:

InvalidCastException: 
           Unable to cast object of type 'System.String[*]' to type 'System.String[]'.

我尝试过不同的访问字符串的方法

按指数:

String arr_elem = arr[1];

通过转换为IEnumerable:

IEnumerable list = (IEnumerable)arr;

通过使用简单的foreach循环:

foreach (String str in arr)
{
   Console.WriteLine(str);
}

然而,无论我尝试什么,我总是会遇到与上述相同的例外.

任何人都可以解释我在这里失踪/我做错了什么?特别是String [*] – 这是什么意思?

解决方法

尝试
object arr_r = Document.GetCrossReferenceItems(WdReferenceType.wdRefTypeHeading);
Array arr = ((Array) (arr_r));

string myHeading = (string) arr.GetValue(1);

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...