关于读word中table出现“无法将带 [] 的索引应用于“Interop.Word.Tables”错误的解决

来源:互联网 发布:最美的诗词 知乎 编辑:程序博客网 时间:2024/05/01 10:55

对于“无法将带 [] 的索引应用于“Interop.Word.Tables”类型的表达式”的错误

错误来源:

这是在网上找到的读取word中table的部分代码:

读取word中table的方法网上很多都有说,大同小异,这里不再列出。

              doc = cls.Documents.Open(ref path, ref missing, ref missing, ref missing,//根据path来获取word对象                    ref missing, ref missing, ref missing, ref missing,                    ref missing, ref missing, ref missing, ref missing);              table = doc.Tables[1];//获取word中的table              String text = table.Cell(rowIndex, colIndex).Range.Text;//获取table中的值              text = text.Substring(0, text.Length - 2);    //去除尾部的mark
红色部分就是出现错误的代码。


错误解决:是因为我引用的word的类库版本不同,版本较高时就会出现这种问题。这里有两种解决方式:

1、将引用的word的dll降低版本。这种方式我觉得不是一个好的解决方法。

2、通过查看Tables对象,发现里边有一个items方法。所以这里其实并不是没有相应的功能提供。

试想,如果word的版本提高了,但是把常用的功能去掉了,这个是十分不合理的。所以低版本的dll中所具有的功能在高版本中肯定也会存在。只不过是其表现形式不同了。

我的解决方式其实就是将doc.Tables[1]替换为了doc.tables.Item(1),然后一切正常了。


我的认识:其实这个小错误,本来没必要单独拿出来说明。或许有好多人也是这样想的,所以导致我在goole这个问题时,几乎找不到一个合适的答案(只发现了第一种解决方式,但是我不怎么赞同)。这里我也是想说明下自己的体会:

1、过去遇到问题,首先的想法就是,在网上找一个答案。不过也确实现在网络上的资源越来越多,几乎是查什么都就可以找到。

但是这样却是忽略了个人的能力,我一直认为记忆的能力不如发现的能力神圣。所以遇到问题不应该是先想到的是百度,谷歌。当发现靠自己真的是解决不了了,然后再去借助外力。

2、对于新的只是应该抱有敬畏心态,或许新知识存在一定优势,它提供了更便捷的方式、更多的方法,但是他也很难避免对过去的技术进行了一些变动,从而导致过去的一些很常用的方法出现错误。这个虽然大多是可以解决的,但是仍然也会有一个时间的浪费。

3、不要过于相信网络,目前网上的信息,你抄我,我抄你的,一段相同的代码几乎随处可见。有的代码在抄来抄去的过程中丢失了其应有的一些属性,从而使得看起来很费劲,或者直接就是看不懂。然后就是随着技术的不断更新,网络上有好多资源已经不适用了,导致查到的方法不再适用。