2

我正在编写一个从 word 文档中读取内容控件的应用程序。它工作正常,但我无法在文档的页眉和页脚中获取控件。

这是我的代码:

public static List<string> GetContentControlsList(word.Document currentWordDocument)
{
    List<string> contentControlsList = new List<string>();

     try
     {
         ContentControls contentControlsCollection = currentWordDocument.ContentControls;

         if (contentControlsCollection != null)
         {
             if (contentControlsCollection.Count > 0)
             {
                 foreach (ContentControl contentControl in contentControlsCollection)
                 {
                     if (!String.IsNullOrEmpty(contentControl.Title) && !contentControlsList.Contains(contentControl.Title))
                     {
                         contentControlsList.Add(contentControl.Title);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         // TODO do error handling here
     }

     return contentControlsList;
 }

我可以使用此代码从文本正文中获取内容控件,但我还需要页眉和页脚。

4

1 回答 1

1

这行得通(代码必须重构一点,但我认为原理很清楚):

    public static List<string> GetContentControlsList(word.Document currentWordDocument)
    {
        List<string> contentControlsList = new List<string>();

        try
        {
            ContentControls contentControlsCollection = currentWordDocument.ContentControls;

            if (contentControlsCollection != null)
            {
                if (contentControlsCollection.Count > 0)
                {
                    foreach (ContentControl contentControl in contentControlsCollection)
                    {
                        if (!String.IsNullOrEmpty(contentControl.Title) && !contentControlsList.Contains(contentControl.Title))
                        {
                            contentControlsList.Add(contentControl.Title);
                        }
                    }
                }
            }

            //Get storyRanges from document for header and footer properties
            StoryRanges storyRanges = currentWordDocument.StoryRanges;

            foreach (Range storyRange in storyRanges)
            {
                ContentControls storyRangeControls = storyRange.ContentControls;

                if (storyRangeControls != null)
                {
                    if (storyRangeControls.Count > 0)
                    {
                        foreach (ContentControl control in storyRangeControls)
                        {
                            if (!String.IsNullOrEmpty(control.Title) && !contentControlsList.Contains(control.Title))
                            {
                                contentControlsList.Add(control.Title);
                            }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            //TODO do error handling here
        }

        return contentControlsList;
    }

感谢 KazJaw 的评论。

于 2014-02-27T14:59:20.573 回答