Word field.update在某些文档

时间:2016-03-23 08:10:34

标签: c# ms-word

我使用此代码更新word文档中的所有字段:

   private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        int i = 0;
        foreach (Word.Field field in Doc.Fields)
        {
            try
            {
                field.Update();
            }
            catch (Exception ex) { Console.WriteLine(ex.Message); }
            backgroundWorker1.ReportProgress(i);
            i++;
        }
    }

这适用于我的大多数文档,但是有一个文档,其中某些循环中的代码最终会以某种方式结束。只有ReportProgress抛出超出范围的错误,因为它更新了更多字段,然后应该在文档中。但除此之外我没有看到任何错误信息。

所以现在我正在研究如何解决这个问题,可能是在代码中,或者可能找出word文档中的错误,但到目前为止我还没有找到任何可以帮助我跟踪问题的内容。

这可能是单词某些单词文档中的已知问题吗? 关于如何解决这个问题或者在doc这个词中发现错误的任何其他建议?

1 个答案:

答案 0 :(得分:0)

如果没有看到您的实际文档,我只能猜测,但更新特定字段可能会修改您正在迭代的字段集合。

在这种情况下,可能的解决方法是在开始循环之前拍摄字段的“快照”:

var fieldsToUpdate = Doc.Fields.OfType<Field>().ToList();
foreach (var field in fieldsToUpdate)
{
    field.Update();
}

这样你可以确定你的foreach循环终止。