C#/VB.NETでWordの空の行を削除する

Wordドキュメントに空の行が大量に存在する場合は、手動で1つずつ削除するよりも、プログラミング方法を使用する方が時間と労力を節約できます。[Free Spire.Doc for .NET](https://jp.e-iceblue.com/introduce/free-spire-doc-for-net.html)はこの機能を実現することができます。次に、操作手順とコードについて詳しく説明します。

## Free Spire.Doc for .NETをインストールする
**方法1**：[NuGet](https://www.nuget.org/packages/FreeSpire.Doc)を介してFree Spire.Doc for .NETをインストールする
「ツール」>「NuGetパッケージマネージャ」>「パッケージマネージャコンソール」の順に選択し、次のコマンドを実行します。
```
PM> Install-Package FreeSpire.Doc	
```
**方法2**：プログラムに手動でSpire.doc.dllファイルを導入する
[Free Spire.Doc for.NET](https://jp.e-iceblue.com/download/free-spire-doc-for-net.html)をローカルにダウンロードし、解凍してインストールします。インストールが完了したら、Visual Studioを開いて新しいプロジェクトを作成し、右側のソリューションエクスプローラで「参照」を右クリックし、「参照を追加」>「参照」を選択して、インストールパスの下のBINフォルダのdllファイルを見つけ、「OK」をクリックして、プログラムに参照を追加します。

## 操作手順とコード
詳細な手順は次のとおりです。
* Documentインスタンスを作成します。
* Document.LoadFromFile() メソッドを使用してサンプルの Word ドキュメントをロードします。
* ドキュメント内のすべての段落をループして、段落が空白の段落であるかどうかを決定します。
* DocumentObjectCollection.Remove() メソッドを使用し、Word から空白の段落を削除します。
* Document.SaveToFile() メソッドを使用して、結果を別のファイルに保存します。
**C#:**
```
using Spire.Doc;
using Spire.Doc.Documents;
using System;

namespace RemoveEmptyLines
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentインスタンスを作成する
            Document doc = new Document();

            //Word ドキュメントをロードする 
            doc.LoadFromFile(@"sample.docx");

            //ドキュメント内のすべての段落をループする
            foreach (Section section in doc.Sections)
            {
                for (int i = 0; i < section.Body.ChildObjects.Count; i++)
                {
                    if (section.Body.ChildObjects[i].DocumentObjectType == DocumentObjectType.Paragraph)
                    {
                        //段落が空白の段落であるかどうかを決定する                       
                        if (String.IsNullOrEmpty((section.Body.ChildObjects[i] as Paragraph).Text.Trim()))
                        {
                            //空白の段落を削除する
                            section.Body.ChildObjects.Remove(section.Body.ChildObjects[i]);
                            i--;
                        }
                    }
                }
            }
            //結果ドキュメントの保存する
            doc.SaveToFile("RemoveEmptyLines.docx", FileFormat.Docx2013);
        }
    }
}
```
**VB.NET：**
```
Imports Spire.Doc
Imports Spire.Doc.Documents

Namespace RemoveEmptyLines
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentインスタンスを作成する
            Dim doc As Document = New Document()

            'Word ドキュメントをロードする 
            doc.LoadFromFile("sample.docx")

            'ドキュメント内のすべての段落をループする
            For Each section As Section In doc.Sections
                For i As Integer = 0 To section.Body.ChildObjects.Count - 1
                    If section.Body.ChildObjects(i).DocumentObjectType Is DocumentObjectType.Paragraph Then
                        '段落が空白の段落であるかどうかを決定する                       
                        If String.IsNullOrEmpty(TryCast(section.Body.ChildObjects(i), Paragraph).Text.Trim()) Then
                            '空白の段落を削除する
                            section.Body.ChildObjects.Remove(section.Body.ChildObjects(i))
                            i -= 1
                        End If
                    End If
                Next
            Next
            '結果ドキュメントの保存する
            doc.SaveToFile("RemoveEmptyLines.docx", FileFormat.Docx2013)
        End Sub
    End Class
End Namespace
```
![2022-12-08_095353.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/20527f05-592c-6c80-2259-4a75310271fd.png)
![2022-12-08_095428.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/7f75d975-2b66-1606-0e5e-274092b84311.png)