【Java】Word文書の空白行を削除する方法

スキャンや変換などで作成されたWord文書には、非常に多くの空白行がある場合があります。 これらは文書の書式を混乱させ、文書の外観に影響を与え、読みにくくする可能性があります。 そのため、文書の可読性と美観を高めるためには、これらの空白行を削除する必要があります。 この記事では、無料の[Free Spire.Doc for Java](https://jp.e-iceblue.com/introduce/free-spire-doc-for-java.html)を使用して、Javaプログラム経由で**Word文書から空白行をすばやく削除する方法**を紹介します。

- **[Word文書内のすべての空白行を削除する](#word文書内のすべての空白行を削除する)**

### 【依存関係の追加】
この記事の方法は、無料のWord文書処理Java API、Free Spire.Doc for Javaが必要です。このAPIは、[公式サイト](https://jp.e-iceblue.com/download/free-spire-doc-for-java.html)からダウンロードするか、Mavenでプロジェクトに導入することができます。Mavenのコードは以下の通りです。
```xml
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc.free</artifactId>
        <version>5.2.0</version>
    </dependency>
</dependencies>
```

## Word文書内のすべての空白行を削除する
Word文書のセクションをループし、各セクションの子オブジェクトをループし、空の段落である子オブジェクトを削除するだけで、文書のすべての空行を削除することができる。スペースを含む空白行も削除される。詳しい手順は以下の通り。
- **Document** クラスのオブジェクトを作成します。
- **Document.loadFromFile()** メソッドを使用してWord文書を読み込みます。
- 各セクションをループし、各セクションの子オブジェクトをループします。
- 子オブジェクトが段落であるかどうかを判断し、段落であれば段落のテキストを使って文字列オブジェクトを作成します。
- 文字列オブジェクトがNULLかどうかを判断し、NULLの場合は対応する段落を削除します。
- **Document.saveToFile()** メソッドを使用して文書を保存します。

### コード例

```Java
import com.spire.doc.*;
import com.spire.doc.documents.*;

public class removeEmptyLines {
    public static void main(String[] args) {
        //Documentクラスのオブジェクトを作成する
        Document document = new Document();

        //Word文書を読み込む
        document.loadFromFile("サンプル.docx");

        //文書内のすべてのセクションをループする
        for (Section section : (Iterable<? extends Section>) document.getSections()) {
            //各セクションのすべての子オブジェクトをループする
            for (int i = 0; i < section.getBody().getChildObjects().getCount(); i++) {
                //各子オブジェクトが段落かどうかを判断する
                if ((section.getBody().getChildObjects().get(i).getDocumentObjectType().equals(DocumentObjectType.Paragraph) )) {
                    //各段落オブジェクトのテキストを使用して文字列オブジェクトを作成する
                    String s= ((Paragraph)(section.getBody().getChildObjects().get(i))).getText().trim();
                    //文字列オブジェクトがNULLかどうかを判定する
                    if (s.isEmpty()) {
                        //空の段落を削除する
                        section.getBody().getChildObjects().remove(section.getBody().getChildObjects().get(i));
                        i--;
                    }
                }
            }
        }

        //文書を保存する
        document.saveToFile("空白行の削除.docx", FileFormat.Docx_2019);
    }
}
```
![Word文書内のすべての空白行を削除する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/b398a5c3-2c08-0c50-aa82-69c329a41f69.png)

この記事では、無料のJava用Spire.Docを使って空白行を削除する方法を紹介します。段落を削除するのではなく、非表示にしたい場合は「[段落を非表示にする方法](https://jp.e-iceblue.com/tutorials/java/spire-doc-java/doc-java-paragraph/java-hide-a-specific-paragraph-in-word.html)」をご覧ください。

また、[Spire.Doc for Javaチュートリアル](https://jp.e-iceblue.com/tutorials/java/spire-doc-java/doc-java-program-guide-content.html)で詳細を確認したり、[Spire.Docフォーラム](https://www.e-iceblue.com/forum/spire-doc-f6.html)で他のユーザーと議論することもできます。