チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

Displaying items by tag: doccpptext

大型文書において、特定の重要情報を素早く見つけるためには、検索機能が非常に有用です。同時に、明るい色でそれらを強調表示することは、読者の注意を引くために効果的な方法です。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書でテキストを検索して強調表示する方法について説明します。

Spire.Doc for C++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

Word 文書で特定のテキストのすべてのインスタンスを検索して強調表示する

Spire.Doc for C++ では、Document->FindAllString(LPCWSTR_S matchString, bool caseSensitive, bool wholeWord) メソッドを使用して、指定されたテキスト文字列のすべてのインスタンスを検索します。次に、これらのインスタンスをループして明るい色で強調表示することができます。以下は詳細な手順です。

  • Document インスタンスを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->FindAllString() メソッドを使用して、すべての一致するテキストを検索します。
  • すべての一致するテキストをループします。
  • TextSelection->GetAsOneRange() メソッドを使用して、そのテキストのテキスト範囲を取得します。
  • TextRange->GetCharacterFormat()->SetHighlightColor() メソッドを使用してハイライト色を設定します。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"
#include <iostream>

using namespace Spire::Doc;
using namespace Spire::Common;

int main() {
	std::wstring inputFile = L"input.docx";
	std::wstring outputFile = L"FindAndHighlight.docx";

	//wordドキュメントを作成する
	intrusive_ptr<Document> document = new Document();

	//Word文書をディスクからロードする
	document->LoadFromFile(inputFile.c_str());

	//すべてのテキストを検索
	std::vector<intrusive_ptr<TextSelection>> textSelections = document->FindAllString(L"AI", false, true);

	//すべての一致するテキストをループし、ハイライト色を設定する
	for (auto selection : textSelections)
	{
		selection->GetAsOneRange()->GetCharacterFormat()->SetHighlightColor(Color::GetYellow());
	}

	//結果ドキュメントを保存する
	document->SaveToFile(outputFile.c_str(), FileFormat::Docx);
	document->Close();
}

C++:Word 文書でテキストを検索して強調表示する方法

Word 文書で特定のテキストの最初のインスタンスを検索して強調表示する

また、Document->FindString(LPCWSTR_S matchString, bool caseSensitive, bool wholeWord) メソッドを使用することで、指定したテキスト文字列の最初のインスタンスのみを検索し、そのハイライト色を設定することもできます。手順は以下の通りです。

  • Document インスタンスを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->FindString() メソッドを使用して、最初に一致するテキストを検索します。
  • TextSelection->GetAsOneRange() メソッドを使用してそのテキストのテキスト範囲を取得します。
  • 次に TextRange->GetCharacterFormat()->SetHighlightColor() メソッドを使用してハイライト色を設定します。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"
#include <iostream>

using namespace Spire::Doc;
using namespace Spire::Common;

int main() {
    std::wstring inputFile = L"input.docx";
    std::wstring outputFile = L" FindAndHighlightFirst.docx";

    //wordドキュメントを作成する
    intrusive_ptr<Document> document = new Document();

    //Word文書をディスクからロードする
    document->LoadFromFile(inputFile.c_str());

    //最初に一致するテキストを検索する
    intrusive_ptr<TextSelection> textSelection = document->FindString(L"AI", false, true);

    //ハイライト色を設定する
    textSelection->GetAsOneRange()->GetCharacterFormat()->SetHighlightColor(Color::GetYellow());

    //結果ドキュメントを保存する
    document->SaveToFile(outputFile.c_str(), FileFormat::Docx);
    document->Close();
}

C++:Word 文書でテキストを検索して強調表示する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in テキスト
Tagged under

Microsoft Wordの「検索と置換」は、ドキュメント編集時に重要な機能です。Word ドキュメント内の特定のテキストを素早く検索し、一度にすべてのインスタンスを置き換えることができます。これは、大規模な Word ドキュメントで情報を更新したり、つづりの間違いを修正する必要がある場合に特に役立ちます。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書内のテキストを検索して置換する方法について説明します。

Spire.Doc for C++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

テキストを検索して、そのすべてのインスタンスを新しいテキストに置き換える

テキストを検索し、そのすべてのインスタンスを別のテキストに置き換えるには、Document->Replace() メソッドを使用してください。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • 特定のテキストを検索し、Document->Replace() メソッドを使用してすべてのインスタンスを別のテキストに置き換えます。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* document = new Document();
	//Wordドキュメントをロードする
	document->LoadFromFile(L"Input.docx");

	//特定のテキストを検索して、すべてのインスタンスを別のテキストに置換える
	document->Replace(L"Spire.Doc", L"E-iceblue", false, true);

	//結果ドキュメントを保存する
	document->SaveToFile(L"ReplaceAllInstances.docx", FileFormat::Docx2013);
	document->Close();
	delete document;
}

C++:Word 文書内のテキストを検索して置換する方法

テキストを検索して、その最初のインスタンスを新しいテキストに置き換える

Spire.Doc for C++ は置換モードを変更できる Document->SetReplaceFirst() メソッドを提供します。変更後、すべてのインスタンスではなく最初のインスタンスを置き換えできます。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document->SetReplaceFirst(true) メソッドを使用して、置換モードを変更します。
  • Document->Replace() メソッドを使用して、テキストの最初のインスタンスを別のテキストに置き換えます。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* document = new Document();
	//Wordドキュメントをロードする
	document->LoadFromFile(L"Input.docx");

	//置換モードを変更する
	document->SetReplaceFirst(true);

	//テキストの最初のインスタンスを別のテキストに置き換える
	document->Replace(L"Spire.Doc", L"E-iceblue", false, true);

	//結果ドキュメントを保存する
	document->SaveToFile(L"ReplaceFirstInstance.docx", FileFormat::Docx2013);
	document->Close();
	delete document;
}

C++:Word 文書内のテキストを検索して置換する方法

正規表現を使用してテキストを検索して置き換える

Document->Replace() メソッドを使用して、正規表現に一致するテキストを新しいテキストに置き換えることができます。そして、Regex インスタンスと新しいテキストをパラメータとしてメソッドに渡します。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Regex クラスのインスタンスを初期化して正規表現を作成します。
  • Document->Replace() メソッドを使用して、正規表現に一致するテキストを検索し、別のテキストに置き換えます。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* doc = new Document();
	//Wordドキュメントをロードする	
	doc->LoadFromFile(L"Input1.docx");

	//#で始まるテキストに一致する正規表現を作成する
	Regex* regex = new Regex(L"\\#\\w+\\b");

	//正規表現に一致するテキストを検索し、別のテキストに置き換える
	doc->Replace(regex, L"E-iceblue");

	//結果ドキュメントを保存する
	doc->SaveToFile(L"ReplaceWithRegex.docx", FileFormat::Docx2013);
	doc->Close();
	delete doc;
}

C++:Word 文書内のテキストを検索して置換する方法

テキストを検索して画像に置き換える

Spire.Doc for C++ には、テキストを画像に置き換える直接的な方法はありません。しかし、テキストの位置に画像を挿入して、テキストを削除することで実現できます。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • Document->FindAllString() メソッドを使用して特定のテキストを検索し、そのテキストをコンテナに格納します。
  • コンテナのテキストをループします。
  • DocPicture クラスのインスタンスを初期化します。
  • DocPicture->LoadImageSpire() メソッドを使用して画像をロードします。
  • 検索されたテキストを単一テキスト範囲として取得し、その段落内のテキスト範囲のインデックスを取得します。
  • テキスト範囲の位置に画像を挿入し、ドキュメントからテキスト範囲を削除します。
  • Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentクラスのインスタンスを初期化する
	Document* doc = new Document();
	//Wordドキュメントをロードする
	doc->LoadFromFile(L"Input.docx");
	//特定のテキストを検索し、結果をコンテナに格納する
	vector<TextSelection*> selections = doc->FindAllString(L"Spire.Doc", true, true);
	int index = 0;
	TextRange* range = nullptr;

	//コンテナのテキストをループする
	for (auto selection : selections)
	{
		//画像をロードする
		DocPicture* pic = new DocPicture(doc);
		pic->LoadImageSpire(L"image.png");
		//検索されたテキストを単一テキスト範囲として取得する
		range = selection->GetAsOneRange();
		//その段落内のテキスト範囲のインデックスを取得する
		index = range->GetOwnerParagraph()->GetChildObjects()->IndexOf(range);
		//インデックスに画像を挿入する
		range->GetOwnerParagraph()->GetChildObjects()->Insert(index, pic);
		//テキスト範囲を削除する
		range->GetOwnerParagraph()->GetChildObjects()->Remove(range);
	}

	//結果ドキュメントを保存する
	doc->SaveToFile(L"ReplaceWithImage.docx", FileFormat::Docx2013);
	doc->Close();
	delete doc;
}

C++:Word 文書内のテキストを検索して置換する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in テキスト
Tagged under

Word ドキュメントを扱う際、新しいドキュメントを作成するためやその他の目的で、ドキュメントからテキストや画像を抽出する必要があることがよくあります。 テキストをコピーしたり、画像を保存したりする作業をひとつひとつ手作業で行うと、非常に時間がかかり、ミスや漏れが発生しやすくなります。 この記事では、Spire.Doc for C++ を使って、プログラム的に Word ドキュメントからテキストや画像を素早く抽出する方法について説明します。

Spire.PDF for C++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

Word ドキュメントからテキストを抽出する

Spire.Doc for C++ の Document->GetText() メソッドは、Word ドキュメント内の全てのテキストを取得することができます。 ここでは、Word ドキュメントからテキストを抽出し、TXT ファイルとして保存する方法を詳しく説明します。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して、Word ドキュメントを読み込みます。
  • Document->GetText() メソッドを使用して、ドキュメントのすべてのテキストを取得します。
  • TXT ファイルを作成し、抽出されたテキスト内容を書き込みます。
  • C++
#include "Spire.Doc.o.h"

#include <iostream>
#include <locale>
#include <codecvt>
using namespace Spire::Doc;
using namespace std;

int main()
{
	//Documentのオブジェクトを作成する
	Document* document = new Document();

	//Wordドキュメントを読み込む
	document->LoadFromFile(L"C:/宇宙からの視点.docx");

	//ドキュメントのテキストを取得する
	wstring text = document->GetText();

	//TXTファイルを作成し、抽出したテキストを書き込む
	wofstream write(L"Output/テキストの抽出.txt");
	auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>);
	write.imbue(LocUtf8);
	write << text;
	write.close();
	document->Close();
	delete document;
}

C++:Word ドキュメントからテキストと画像を抽出する方法

Word ドキュメントから画像を抽出する

Word ドキュメントの画像を抽出するには、ドキュメントの各サブオブジェクトが画像であるかどうかを判断し、DocPicture->GetImage() を使用して画像を抽出する必要があります。 以下はその詳細な手順です。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • ドキュメントを deque キューの末尾に付け、ベクターイメージのリストを作成します。
  • ドキュメントのすべてのサブオブジェクトをループし、各サブオブジェクトが画像であるかどうかを判断します。 もしそうなら、DocPicture->GetImage() メソッドを使用して画像を取得し、リストに追加します。
  • 取り出した画像を指定したパスに保存します。
  • C++
#include "Spire.Doc.o.h"
#include <deque>

using namespace Spire::Doc;

int main() {

	//Documentのオブジェクトを作成する
	Document* document = new Document();

	//Wordドキュメントを読み込む
	document->LoadFromFile(L"C:/宇宙からの視点.docx");

	//dequeキューの末尾にドキュメントを追加する
	std::deque<ICompositeObject*> nodes;
	nodes.push_back(document);

	//ベクターグラフィックのリストを作成する
	std::vector<Image*> images;

	//ドキュメントのすべての子オブジェクトをループする
	while (nodes.size() > 0)
	{
		ICompositeObject* node = nodes.front();
		nodes.pop_front();
		for (int i = 0; i < node->GetChildObjects()->GetCount(); i++)
		{
			IDocumentObject* child = node->GetChildObjects()->GetItem(i);

			//すべての画像を取得し、リストに追加する
			if (child->GetDocumentObjectType() == DocumentObjectType::Picture)
			{
				DocPicture* picture = dynamic_cast<DocPicture*>(child);
				images.push_back(picture->GetImage());
			}
			else if (dynamic_cast<ICompositeObject*>(child) != nullptr)
			{
				nodes.push_back(dynamic_cast<ICompositeObject*>(child));
			}

		}
	}

	//指定したパスに画像を保存する
	for (int i = 0; i < images.size(); i++)
	{
		std::wstring fileName = L"画像-" + std::to_wstring(i) + L".png";
		images[i]->Save((L"Output/画像/" + fileName).c_str(), ImageFormat::GetPng());
	}
	document->Close();
	delete document;
}

C++:Word ドキュメントからテキストと画像を抽出する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in テキスト
Tagged under