【Java】Word文書の複数列効果を実現する

マルチカラムは、新聞、本、雑誌で一般的に使用されている組版スタイルで、読みやすさだけでなく、ページの美しさも向上させます。この記事では、Free Spire.Doc for Javaを使用してJavaアプリケーションのWord文書に複数の列を追加し、、各列の幅、間隔、分割線を設定する方法を紹介します。

**基本的な手順：**
**1.** [Free Spire.Doc for Java](https://www.e-iceblue.com/Download/doc-for-java-free.html)パッケージをダウンロードして解凍します。
**2.** libフォルダーのSpire.Doc.jarパッケージを依存関係としてJavaアプリケーションにインポートします。（Mavenリポジトリから直接JARパッケージをインストールすることもできます（pom.xmlファイルを構成するコードについては、以下を参照してください））。
**3.** Javaアプリケーションで、新しいJava Class（ここではMutiColumnという名前）を作成し、対応するJavaコードを入力して実行します。

**pom.xmlファイルを構成します：**

```java
<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc.free</artifactId>
        <version>2.7.3</version>
    </dependency>
</dependencies>
```

**Javaコード例：**

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

public class CreateMutiColumnWordDocument {
    public static void main(String[] args){
        //Word文書を作成する
        Document document = new Document();
        //sectionを追加する
        Section section = document.addSection();

        //sectionに3つの列を追加し、各列の幅と間隔を設定します
        section.addColumn(100, 30);
        section.addColumn(100, 30);
        section.addColumn(100, 30);

        //列分割線を追加
        section.getPageSetup().setColumnsLineBetween(true);

        String paraText1 = "悩むことは若さの特権、大いに悩んでほしい。悩むことによって、人は考える力を身につけていく。"
                +"しかし、考える力が身につかない悩み方もある。その一つ。起こってしまったことをくよくよすること。"
                +"これは、いくら悩んでも、回答が得られるものではなく、ただエネルギーの消耗に導くだけ。";

        String paraText2 = "反省しているつもりが、いつの間にか自分を責めていることに転じてしまう悩み方もあまり生産的とは言えない。"
                +"逆に、責任を誰かにすぐ転嫁しようとする人がいる。"
                +"そういう人は自分が理詰めでものを考えていると錯覚しているから、なおのこと質が悪い。";

        String paraText3 = "考える力を身につけるには、まず、物事をありのままに受け入れる姿勢を養わなければならない。"
                +"次に感情に流されずに、原因を冷静に見極める必要がある。"
                +"そのためには、多角的な視点から物事をとらえる癖をつけなければならない。";

        //sectionに段落を追加
        Paragraph paragraph = section.addParagraph();
        //段落にテキストを追加
        paragraph.appendText(paraText1);
        //列区切りを追加（列区切りの後のテキストは次の列から始まります）
        paragraph.appendBreak(BreakType.Column_Break);

        //sectionに段落を追加
        paragraph = section.addParagraph();
        //段落にテキストを追加
        paragraph.appendText(paraText2);
        //列区切りを追加
        paragraph.appendBreak(BreakType.Column_Break);

        //sectionに段落を追加
        paragraph = section.addParagraph();
        //段落にテキストを追加
        paragraph.appendText(paraText3);

        //段落スタイルを作成し、フォントとサイズを設定する
        ParagraphStyle paragraphStyle = new ParagraphStyle(document);
        paragraphStyle.setName("style");
        paragraphStyle.getCharacterFormat().setFontName("宋体");
        paragraphStyle.getCharacterFormat().setFontSize(12);
        document.getStyles().add(paragraphStyle);

        //段落に段落スタイルを適用する
        for(int i = 0; i< section.getParagraphs().getCount(); i++){
            section.getParagraphs().get(i).applyStyle("style");
        }

        //結果ファイルを保存
        document.saveToFile("MutiColumn.docx", FileFormat.Docx_2013);

    }
}
```

**出力ドキュメント：**
![multicolumn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/5cf42efa-a47a-0b64-2011-017e378b8ed2.png)