簡體   English   中英

Word自動處理-循環中的CopyFormat =慢

[英]Word automation - CopyFormat in loop = slow

我正在嘗試復制/粘貼Word中字段的格式。 (的Microsoft.Office.Interop.Word)

我的目標是復制格式,更新字段並粘貼格式以將其應用於新內容。 (在我的測試代碼中,省略了更新和粘貼的部分)

我注意到,這在很大的循環中變得非常慢。 我的Word文檔中有+-5000個字段。 經過+ -500次迭代后,執行一次迭代最多需要1.2秒(僅適用於本文底部的代碼)。 達到1.2秒后,持續時間不再增加(可能與緩沖區有關。)

誰能給我解決方案以提高速度?

    foreach (Field o in m_doc.Fields)
    {
      if (o.Type == WdFieldType.wdFieldRef)
      {
        o.Select();
        Range r = o.Result;
        r.Select();
        m_doc.Application.Selection.CopyFormat();
      }
    }

但是,我在這里有點吸管了...

  1. 您當然可以通過省略o.Select();來加快速度。 不必要,您進行的每個SELECT調用都會明顯影響性能。

  2. 緩慢是foreach循環中的一個已知問題-它與API處理文檔的方式有關。 盡我所能記得,它或多或少傾向於從頭開始並在每個循環中向前計數。 使用索引計數器的“ for”循環趨向於更快。 在某些情況下,使用“ for”循環來消除“ BACKWARDS”可能會更加有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM