コメントは、追加情報を提供したり、ドキュメント内の何かに注意を引くために使用されます。コメントされているテキストも役立つ場合があり、他の目的でそれを抽出したい場合があります。この記事では、Spire.Doc for Java を使用して、Word 文書の 2 つのコメントマークの間のテキストを抽出する方法を紹介します。
Spire.Doc for Java をインストールします
まず、Spire. Doc for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.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</artifactId>
<version>4.11.8</version>
</dependency>
</dependencies>
Word で 2 つのコメントマークにあるテキストを取得する
開始マーク(CommentMarkStart クラスで表される)と終了マーク(CommentMarkEnd クラスで表される)の間のテキストを取得するには、コメントマークのインデックスを取得する必要があります。これらのインデックスは、段落でマークされているテキストの位置を指定します。以下は、Word 文書で 2 つのコメントマーク内にテキストを入れる詳細な手順です。
- Document オブジェクトを作成し、Document.loadFromFile() メソッドを使用してサンプルの Word 文書を読み込みます。
- Document.getComments().get() メソッドを使用して最初のコメントを取得します。
- コメントの開始マークと終了マークを取得します。
- 所有者段落で開始マークのインデックスと終了マークのインデックスを取得します。
- インデックス間のテキスト範囲を取得してから、TextRage.getText() メソッドを使用してテキスト範囲のテキストを取得します。
- Java
import com.spire.doc.Document;
import com.spire.doc.documents.CommentMark;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.Comment;
import com.spire.doc.fields.TextRange;
public class GetTextInsideCommentMarkers {
public static void main(String[] args) {
//Documentオブジェクトを作成する
Document doc = new Document();
//サンプルのWord文書をロードする
doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");
//最初のコメントを取得する
Comment comment = doc.getComments().get(0);
//コメントの開始マークと終了マークを取得する
Paragraph para = comment.getOwnerParagraph();
CommentMark start = comment.getCommentMarkStart();
CommentMark end = comment.getCommentMarkEnd();
//開始マークのインデックスと終了マークのインデックスをそれぞれ取得する
int indexOfStart = para.getChildObjects().indexOf(start);
int indexOfEnd = para.getChildObjects().indexOf(end);
//文字列変数を宣言する
String textMarked = "";
//2つのインデックス間の数値をループする
for (int i = indexOfStart + 1; i < indexOfEnd; i++) {
if (para.getChildObjects().get(i) instanceof TextRange) {
//インデックスで指定されたテキスト範囲を取得する
TextRange range = (TextRange) para.getChildObjects().get(i);
//テキスト範囲からテキストを取得する
textMarked += range.getText();
}
}
//マークされているテキストを印刷する
System.out.println(textMarked);
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。