【发布时间】:2011-08-08 18:23:25
【问题描述】:
我正在自动化 Word 文档处理,我根据搜索条件添加书签。该代码效果很好,但是当我在文档中有表格时它会失败。当我阅读文本时,它似乎在普通文档中以每行一行的形式给出,但在表格的情况下,文本有列和行。因此,当我搜索一个文本并且该文本在单列中以两行写入时,结果会没问题,但是当我选择文本时,WORD API 会从两列而不是同一列中选择文本,而是从两行中选择文本。
col1 col2 这是第二栏 一些文字现在,如果我搜索文本“这是一些文本”,我得到了正确的结果,但是当我选择它时,我得到了“这是第二列”
reg = New Regex(result.token(j).ToString())
Dim m As Match = reg.Match(_doc.Range.Text, 0)
pos = m.Index ' start position is fine
'' start is the starting position of the token in the content...
''length is the size of the token
len = result.token(j).ToString().Length ' text length is fine
rng = _doc.Range(pos, len + pos) ' this copies the text from the second col
_doc.Bookmarks.Add(bookmarkName, rng)
【问题讨论】:
-
对不起,我不明白你的问题:
Now if I search the text "This is Some text" I got it correctly工作得很好,那怎么了?This is和Some Text是否在两个不同的行中? -
很抱歉给您带来了困惑。实际上,为了添加书签,我首先使用正则表达式搜索文本,它告诉我字符串存在以及文本的起始位置。然后我选择文本为 _doc.Range(pos, lenofString + pos) 这应该选择实际的文本吧?所以在我的例子中,如果我正在寻找的文本是“这是一些文本”,那么这段代码应该选择它,但会发生什么是它选择了“这是第二列”,这意味着它不知道文本是否被写入在一个单元格内,它只是将其读取为行。这对你有意义吗?