Word 文書を扱う過程で、しばしば困った事態が発生します。例えば、大きな Word 文書を完成させたとき、何度も出てくる名称や専門用語の中に間違いがあることが判明した。間違っている言葉を一つずつ変えていくとなると、作業量が多すぎて大変です。幸いなことに、このような問題を素早く解決する簡単な方法がいくつかあります。MS Word には、検索と置換という機能があり、ユーザーは置き換えたいものを素早く見つけて、新しいテキストに置き換えることができます。プロフェッショナル向け開発コンポーネント Spire.Doc for Java は、コードを通じて単語の検索と置換を行う機能を開発者に提供します。この記事では、Spire.Doc for Java を使って、Word 文書内のテキストを素早く検索し、新しいテキストや画像に置き換える方法を紹介します。
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>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc</artifactId>
<version>10.7.10</version>
</dependency>
</dependencies>
テキストを検索し一致するものをすべて新しいテキストに置き換える
Spire.Doc for Java が提供する Document.replace() メソッドを使うだけで、素早くテキストを検索し、新しいテキストに置き換えることができます。 このメソッドは、すべてのマッチを新しいテキストに置き換えます。大文字と小文字を区別するかどうか、検索語を完全に検索するかどうかの設定に対応しています。
テキストを検索し、一致するものをすべて置き換える詳細な手順は次のとおりです。
- Document クラスのオブジェクトを作成します。
- Document.loadFromFile() メソッドで Word 文書を読み込みます。
- Document.replace() メソッドを使って、「鹿」のマッチングをすべて「水牛」に置き換えます。
- 生成されたドキュメントを Document.saveToFile() メソッドで保存します。
- Java
import com.spire.doc.Document;
public class replaceAll {
public static void main(String[] args) {
//Documentクラスのオブジェクトを作成する
Document document = new Document();
//Word文書の読み込み
document.loadFromFile("洞窟芸術.docx");
//「鹿」のマッチングをすべて「水牛」に置き換える
document.replace("鹿", "水牛", false, true);
//結果ファイルを保存する
document.saveToFile("すべて置き換える.docx");
}
}
テキストを検索し最初に一致したテキストを新しいテキストに置き換える
Doc for Java には、Document.setReplaceFirst() メソッドもあり、Document.replace() メソッドの置換モードを、最初の一致を置換するか、すべての一致を置換するかを変更することができます。
テキストを検索し、最初に一致したものを置き換えるには、次のように操作します。
- Document クラスのオブジェクトを作成します。
- Document.loadFromFile() メソッドで Word 文書を読み込みます。
- Document.setReplaceFirst() メソッドで、最初に一致したものだけを置き換えるように設定します。
- Document.replace() メソッドを使って、最初にマッチした「鹿」を「水牛」に置き換えます。
- 生成されたドキュメントを Document.saveToFile() メソッドで保存します。
- Java
import com.spire.doc.Document;
public class replaceFirst {
public static void main(String[] args) {
//Documentクラスのオブジェクトを作成する
Document document = new Document();
//Word文書の読み込み
document.loadFromFile("洞窟芸術.docx");
//置換モードを最初のマッチを置換するモードに変更する
document.setReplaceFirst(true);
//「テキスト「鹿」の最初のマッチを新しいテキスト「水牛」に置き換える
document.replace("鹿", "水牛", false, true);
//結果ファイルを保存する
document.saveToFile("最初のマッチを置き換える.docx");
}
}
テキストを検索し画像に置き換える
Spire.Doc for Java は、テキストを検索し、一致したものをすべて画像として置き換えることもサポートしています。そのためには、テキストを検索して、マッチしたものを全て取得する必要があります。次に、画像をドキュメントのオブジェクトとして読み込み、マッチしたテキストがある場所に挿入し、テキストを削除します。
詳細な手順は以下の通りです。
- Document クラスのインスタンスを作成します。
- Document.loadFromFile() メソッドで Word 文書を読み込みます。
- Document.findAllString() メソッドを使用して、ドキュメント内の「鹿」にマッチするすべてのテキストを検索します。
- 一致したテキストをループして、すべて画像に置き換えます。
- Document.saveToFile() メソッドでドキュメントを保存します。
- Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.TextSelection;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
public class replaceTextWithImage {
public static void main(String[] args) {
//Documentクラスのオブジェクトを作成する
Document document = new Document();
//Word文書の読み込み
document.loadFromFile("洞窟芸術.docx");
//ドキュメント内の「鹿」にマッチするすべてのテキストを検索する
TextSelection[] selections = document.findAllString("鹿", true, true);
//一致したテキストをループして、すべて画像に置き換える
int index = 0;
TextRange range = null;
for (Object obj : selections) {
TextSelection textSelection = (TextSelection)obj;
//DocPictureクラスのオブジェクトを作成し、画像を読み込む
DocPicture pic = new DocPicture(document);
pic.loadImage("鹿.png");
range = textSelection.getAsOneRange();
index = range.getOwnerParagraph().getChildObjects().indexOf(range);
range.getOwnerParagraph().getChildObjects().insert(index,pic);
range.getOwnerParagraph().getChildObjects().remove(range);
}
//指定されたマッチを画像に置き換える
//DocPictureクラスのオブジェクトを作成し、画像を読み込む
//DocPicture pic = new DocPicture(document);
//pic.loadImage("鹿.png");
//Object object = selections[1];
//TextSelection selection = (TextSelection) object;
//TextRange textRange = selection.getAsOneRange();
//int i = textRange.getOwnerParagraph().getChildObjects().indexOf(textRange);
//textRange.getOwnerParagraph().getChildObjects().insert(i,pic);
//textRange.getOwnerParagraph().getChildObjects().remove(textRange);
//結果ファイルを保存する
document.saveToFile("テキストを検索して画像に置き換える.docx", FileFormat.Docx_2013);
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。