Java Word文書でコメントを挿入

<h1><strong>はじめに</strong></h1>
<p>Word文書でコメントを挿入することで、気になる文章について意見や、修正を希望する箇所などを記載することができます。今回は<strong><a href="https://www.e-iceblue.com/Introduce/doc-for-java.html">Spire.Doc for Java</a></strong>というライブラリを活用して、Word文書でコメントを挿入する方法を紹介します。</p>
<h1><strong>Spire.Doc for Java</strong><strong>とは？</strong></h1>
<p><strong><a href="https://www.e-iceblue.com/Introduce/doc-for-java.html">Spire. Doc for Java</a></strong>は、Eiceblue社が開発され、開発者が JavaプラットホームでWordのドキュメントを迅速かつ高品質で作成・編集・変換・印刷するために設計された専門的なDoc処理APIです。</p>
<p>中には、商用版と無料版<strong><a href="https://www.e-iceblue.com/Download/doc-for-java.html">Free Spire.Doc for Java</a></strong>があります。<strong><a href="https://www.e-iceblue.com/Introduce/doc-for-java.html">Spire.Doc for Java</a></strong>は商用版ではありますが、基本的な機能を搭載しているので、無料試用で日常の仕事にはもう結構だと思います。</p>
<h1><strong>下準備</strong></h1>
<p>1.E-iceblueの公式サイトから<strong><a href="https://www.e-iceblue.com/Download/doc-for-java.html">Spire.Doc for Java</a></strong>をダウンロードしてください。</p>
<p>2.IDEを起動して新規プロジェクトを作成してから、インストールされたファイルにある相応しいSpire.Doc.jarを参照に追加してください。</p>
<h1><strong>Maven</strong><strong>の側なら</strong></h1>
<p>もしMavenの利用者だったら、pom.xmlファイルに下記のようなコードを追加することで、JARを簡単にインポートできます。</p>

```java
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <url>https://repo.e-iceblue.com/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.Doc</artifactId>
        <version>4.9.0</version>
    </dependency>

```

<p>下記は詳しいステップとコードになります。</p>
<ul>
<li><strong>Document</strong>オブジェクトを作成し<strong>、</strong><strong>Document.loadFromFile()</strong>メソッドにより、ファイルをロードします。</li>
<li><strong>Document.findAllString()</strong> メソッドで、指定する文字列を探します。</li>
<li>コメントの開始タグとコメント終了タグを作成します。これらは、選択したフレーズの最初と最後にそれぞれ配置されます。</li>
<li><strong>Comment</strong>オブジェクトを作成します。そしてコンテンツと作者を指定します。</li>
<li>選択したフレーズの最初の段落を取得し、子オブジェクトとして段落にコメントを追加します。</li>
<li><strong>Document.saveToFile()</strong> メソッドでファイルを保存します。</li>
</ul>

```java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.CommentMark;
import com.spire.doc.documents.CommentMarkType;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextSelection;
import com.spire.doc.fields.Comment;
public class AddCommentToSpecificText {

    public static void main(String[] args) {

        // Document オブジェクトを作成します
        Document doc = new Document();

        //ファイルをロードします。
        doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.docx");

        //指定する文字列を探し、コメントをつけます。
        TextSelection[] finds = doc.findAllString("夏時間", false, true);
        TextSelection specificText = finds[0];

        //開始マークを作成します
        CommentMark commentmarkStart = new CommentMark(doc);
        commentmarkStart.setType(CommentMarkType.Comment_Start);
        
        //終了マークを作成します
        CommentMark commentmarkEnd = new CommentMark(doc);
        commentmarkEnd.setType(CommentMarkType.Comment_End);

        //コメントをつけます。
        Comment comment = new Comment(doc);
        comment.getBody().addParagraph().setText("夏時間、直訳: 日光節約時間。カナダ、オーストラリアでも用いるとは1年のうち夏 
         を中心とする時期に太陽が出ている時間帯を有効に利用する目的で、標準時を1時間進める制度またはその進められた時刻のこと");
        comment.getFormat().setAuthor("ニック");

        //文字列が配置されている段落を見つけます
        Paragraph para = specificText.getAsOneRange().getOwnerParagraph();

        //段落内の文字列のインデックスを取得します
        int index = para.getChildObjects().indexOf(specificText.getAsOneRange());

        //段落にコメントを追加します。
        para.getChildObjects().add(comment);
        
        //インデックスに基づいて段落に開始マークと終了マークを挿入します
        para.getChildObjects().insert(index, commentmarkStart);
        para.getChildObjects().insert(index + 2, commentmarkEnd);
        
        //保存します。
        doc.saveToFile("AddComment.docx", FileFormat.Docx_2013);
    }
}

```


<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20211103/20211103144447.png" alt="f:id:lendoris:20211103144447p:plain" width="554" height="394" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>
<h1><strong>最後に</strong></h1>
<p>ここまで読んでくださってありがとうございます！もし<strong><a href="https://www.e-iceblue.com/Introduce/doc-for-java.html">Spire.Doc for Java</a></strong>を利用している時にご不明なところがございましたら、ぜひご連絡ください</p>
<p> </p>