C#でWordのセクション区切りを追加または削除する

Wordでは、セクション区切りは文書を異なるセクションに分割するための強力なツールであり、各セクションは余白、用紙の向き、ヘッダー、フッターなどの独立したページ設定を持つことができます。セクション区切りを正しく使用することで、特に長い文書で部分ごとに異なるスタイルを適用する必要がある場合、文書の構成と専門性を大幅に向上させることができます。

この記事では、無料の.NETライブラリを使用して、**C#でWordにセクション区切りを挿入または削除する方法を示します**。
* [C#でWordにセクション区切りを挿入する](#cでwordにセクション区切りを挿入する)
* [C#でWordのセクション区切りを削除する](#cでwordのセクション区切りを削除する)


## 無料の.NET Wordライブラリ
[**Free Spire.Doc for .NET**](https://www.e-iceblue.com/Introduce/free-doc-component.html)は、Word文書を操作するための無料の.NETライブラリです（ただし、ページ制限があります）。
[NuGet](http://www.nuget.org/packages/FreeSpire.Doc/)経由で直接Visual Studioで 「**FreeSpire.Doc**」を検索し、「Install」をクリックしてプログラムに組み込むことができます。または、以下のリンクから製品パッケージをダウンロードし、解凍してから手動でdllファイルをプログラムに追加することもできます。

https://www.e-iceblue.com/Download/download-word-for-net-free.html


## Wordのセクションブレークの種類
[Free Spire.Doc for .NET](https://www.e-iceblue.com/Introduce/free-doc-component.html)では、段落にセクション区切りを挿入するために **`Paragraph.InsertSectionBreak(SectionBreakType breakType)`** メソッドを使用します。`SectionBreakType`列挙に含まれるいくつかのセクションブレークのタイプを以下に示します：
* `SectionBreakType.NoBreak`：連続的な区切りを示す、すなわち、新しいセクションの内容は、新しいページを必要とせずに、現在のページの直後に開始される。
* `SectionBreakType.NewPage`: 次の改ページを示す、 つまり、新しいセクションは次のページから始まる。
* `SectionBreakType.OddPage`: 奇数ページの区切り、すなわち、新しいセクションが次の奇数ページから始まることを示します。
* `SectionBreakType.EvenPage`: 偶数ページ区切り、すなわち、新しいセクションは次の偶数ページから開始することを示します。
* `SectionBreakType.NewColumn`: 複数の列を持つ文書の場合、新しいセクションは次の列から開始します。

> **APIリファレンス:**
https://www.e-iceblue.com/apireference/net/Spire.Doc/html/T_Spire_Doc_Documents_SectionBreakType.htm


## C#でWordにセクション区切りを挿入する
1.	`LoadFromFile()`メソッドでWord文書を読み込む。
2.	指定したセクションの指定した段落を取得する。
3.	**`InsertSectionBreak()`** メソッドを使用して、段落の末尾にセクション区切りを追加します。
4.	`SaveToFile()`メソッドを使用して、結果のドキュメントを保存します。

**サンプルコード：**
```csharp
using Spire.Doc;
using Spire.Doc.Documents;

namespace InsertSectionBreak
{
    class Program
    {
        static void Main(string[] args)
        {
            // Word文書を読み込む
            Document doc = new Document();
            doc.LoadFromFile("蝶.docx");

            //第2セクションを取得する
            Section sec = doc.Sections[0];

            //セクションの第2段落を取得する
            Paragraph para = sec.Paragraphs[1];

            //連続したセクション区切りを挿入する
            para.InsertSectionBreak(SectionBreakType.NoBreak);

            //ファイルを保存する
            doc.SaveToFile("InsertSectionBreak.docx", FileFormat.Docx);
        }
    }
}
```
![SectionBreak.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/4795659c-3da3-f726-8b67-f6562a08b1a7.png)


## C#でWordのセクション区切りを削除する
この例では、元のWord文書の各セクションの内容を新しいWord文書にコピーすることで、すべてのセクション区切りを削除します。

1.	元のWord文書を`LoadFromFile()`メソッドで読み込む。
2.	新しい Word ドキュメントを作成し、そこにセクションを追加します。
3.	元のドキュメントの各セクションを繰り返し処理し、その子オブジェクトを取得します。
4.	子オブジェクトをコピーし、**`Section.Body.ChildObjects.Add()`** メソッドを使用して、子オブジェクトの内容を新しいドキュメントに追加します。
5.	`SaveToFile()`メソッドを使用して、新しい Word ドキュメントを保存します。

**サンプルコード：**
```csharp
using Spire.Doc;

namespace DeleteSectionBreak
{
    class Program
    {
        static void Main(string[] args)
        {
            //元のWord文書を読み込む
            Document doc = new Document();
            doc.LoadFromFile("蝶.docx");

            //新しいWord文書を作成する
            Document NewDoc = new Document();
            //セクションの追加
            Section sec = NewDoc.AddSection();

            //オリジナル文書のすべてのセクションを反復処理する
            for (int i = 0; i < doc.Sections.Count; i++)
            {
                //現在のセクションを取得
                Section section = doc.Sections[i];

                //セクション内のすべての子オブジェクトを反復処理する
                for (int j = 0; j < section.Body.ChildObjects.Count; j++)
                {
                    //子オブジェクトを取得し、新しいドキュメントにコピーする
                    DocumentObject obj = section.Body.ChildObjects[j];
                    sec.Body.ChildObjects.Add(obj.Clone());
                }
            }

            //ファイルを保存する
            NewDoc.SaveToFile("RemoveSectionBreak.docx", FileFormat.Docx);
        }
    }
}
```

* * *
無料の.NET Wordライブラリは、改ページ、余白、ヘッダーとフッター、その他のページ設定の操作もサポートしています。その他の例はクリックしてご覧ください：

https://www.e-iceblue.com/Tutorials/Spire.Doc/Spire.Doc-Program-Guide/Spire.Doc-Program-Guide-Content.html