我使用此代码更新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这个词中发现错误的任何其他建议?
答案 0 :(得分:0)
如果没有看到您的实际文档,我只能猜测,但更新特定字段可能会修改您正在迭代的字段集合。
在这种情况下,可能的解决方法是在开始循环之前拍摄字段的“快照”:
var fieldsToUpdate = Doc.Fields.OfType<Field>().ToList();
foreach (var field in fieldsToUpdate)
{
field.Update();
}
这样你可以确定你的foreach循环终止。