チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
大型文書において、特定の重要情報を素早く見つけるためには、検索機能が非常に有用です。同時に、明るい色でそれらを強調表示することは、読者の注意を引くために効果的な方法です。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書でテキストを検索して強調表示する方法について説明します。
Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.Doc for C++ を C++ アプリケーションに統合する方法
Spire.Doc for C++ では、Document->FindAllString(LPCWSTR_S matchString, bool caseSensitive, bool wholeWord) メソッドを使用して、指定されたテキスト文字列のすべてのインスタンスを検索します。次に、これらのインスタンスをループして明るい色で強調表示することができます。以下は詳細な手順です。
#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();
}
また、Document->FindString(LPCWSTR_S matchString, bool caseSensitive, bool wholeWord) メソッドを使用することで、指定したテキスト文字列の最初のインスタンスのみを検索し、そのハイライト色を設定することもできます。手順は以下の通りです。
#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();
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Microsoft Wordの「検索と置換」は、ドキュメント編集時に重要な機能です。Word ドキュメント内の特定のテキストを素早く検索し、一度にすべてのインスタンスを置き換えることができます。これは、大規模な Word ドキュメントで情報を更新したり、つづりの間違いを修正する必要がある場合に特に役立ちます。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書内のテキストを検索して置換する方法について説明します。
Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.Doc for C++ を C++ アプリケーションに統合する方法
テキストを検索し、そのすべてのインスタンスを別のテキストに置き換えるには、Document->Replace() メソッドを使用してください。詳細な手順は次のとおりです。
#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;
}
Spire.Doc for C++ は置換モードを変更できる Document->SetReplaceFirst() メソッドを提供します。変更後、すべてのインスタンスではなく最初のインスタンスを置き換えできます。詳細な手順は次のとおりです。
#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;
}
Document->Replace() メソッドを使用して、正規表現に一致するテキストを新しいテキストに置き換えることができます。そして、Regex インスタンスと新しいテキストをパラメータとしてメソッドに渡します。詳細な手順は次のとおりです。
#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;
}
Spire.Doc for 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;
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Word ドキュメントを扱う際、新しいドキュメントを作成するためやその他の目的で、ドキュメントからテキストや画像を抽出する必要があることがよくあります。 テキストをコピーしたり、画像を保存したりする作業をひとつひとつ手作業で行うと、非常に時間がかかり、ミスや漏れが発生しやすくなります。 この記事では、Spire.Doc for C++ を使って、プログラム的に Word ドキュメントからテキストや画像を素早く抽出する方法について説明します。
Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.Doc for C++ を C++ アプリケーションに統合する方法
Spire.Doc for C++ の Document->GetText() メソッドは、Word ドキュメント内の全てのテキストを取得することができます。 ここでは、Word ドキュメントからテキストを抽出し、TXT ファイルとして保存する方法を詳しく説明します。
#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;
}
Word ドキュメントの画像を抽出するには、ドキュメントの各サブオブジェクトが画像であるかどうかを判断し、DocPicture->GetImage() を使用して画像を抽出する必要があります。 以下はその詳細な手順です。
#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;
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。