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 に答える