【问题标题】:How to work on a list in a range in a word file using c#如何使用c#处理word文件范围内的列表
【发布时间】:2020-02-12 11:11:18
【问题描述】:

我正在尝试使用 word 自动化编辑 word 文档。在文档中,有一个我要验证和编辑的参考列表。我已经选择了一个范围内的引用部分,现在我想遍历列表。

object start = new Regex(@"(References)\s*:?\s*").Match(wordText).Index;
        object end = wordText.Length;

        Word.Range rngRef = doc.Range(start,end);

这就是我选择范围的方式,现在如何选择列表并循环遍历项目?

【问题讨论】:

  • rngRef.Select(); 将选择文本。 rngRef.Text 是一个包含选择的字符串。顺便说一句:如果正则表达式失败,则将选择整个文档,因为 start 将获得值 0
  • @Luuk 感谢您指出这一点,我在少数情况下观察到它并且不知道发生了什么。但是如何选择并循环遍历有序列表?
  • 在 Word 中查找内容时不要使用 RegEx:如果需要 regex 类型的搜索,请使用 Word 的内置 Find 功能和 通配符 选项。 RegEx 只能在字符串上工作,因此“找到”的内容与文档内容无关。 Word 的Find 功能在文档的上下文中运行。 Find 可以循环执行。网上和其他地方都有很多例子……

标签: c# ms-word word-automation word-interop


【解决方案1】:

我取决于有序列表在 Word 中的“格式化”方式。如果这只是一个可以做的一些段落(从段落中获取文本):

int i = 0;
var paragraphs = rngRef.Paragraphs;
foreach (Word.Paragraph item in paragraphs)
{
     Console.WriteLine("{0}: {1}", ++i, item.Range.Text);
}

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2017-05-18
    相关资源
    最近更新 更多