チュートリアル

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

Koohji

Koohji

文書の段落を読みやすくしたり、論理的な関係性を持たせたい場合は、文字や数字、項目記号によって並べ替えることができます。この機能により、読者は特定の内容を迅速に見つけることができ、リストの内容を短時間で把握することができます。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書に次のリストを挿入する方法について説明します。

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

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

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

C++ で Word に番号付きリストを挿入する

Spire.Doc for C++ には、番号付きリストや箇条書きリストを作成するための ListStyle クラスが用意されています。次に、Paragraph->GetListFormat()->ApplyStyle() メソッドを使用して、リストスタイルを段落に適用できます。番号付きリストを作成する手順は次のとおりです。

  • Document オブジェクトを作成します。
  • Document->AddSection() メソッドを使用してセクションを追加します。
  • ListStyle クラスのインスタンスを作成し、リストのタイプを「Numbered」に指定します。
  • ListStyle->GetLevels()->GetItem(index) メソッドを使用して、リストの特定のレベルを取得します。
  • ListLevel->SetPatternType() メソッドを使用して番号タイプを設定します。
  • Document->GetListStyles()->Add() メソッドを使用して、リストのスタイルをドキュメントに追加します。
  • Section->AddParagraph() メソッドを使用して、ドキュメントに複数の段落を追加します。
  • Paragraph->GetListFormat()->ApplyStyle() メソッドを使用して、特定の段落にリストのスタイルを適用します。
  • Paragraph->GetListFormat()->GetListLevelNumber() メソッドを使用してリストのレベルを指定します。
  • Document->SaveToFile() メソッドを使用して、結果文書を保存します。
  • C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

    //Documentオブジェクトを作成する
    intrusive_ptr<Document> document = new Document();

    //セクションを追加する
    intrusive_ptr<Section> section = document->AddSection();

    //番号付きリストのスタイルを作成する
    intrusive_ptr<ListStyle> listStyle = new ListStyle(document, ListType::Numbered);
    listStyle->SetName(L"numberedList");
    listStyle->GetLevels()->GetItem(0)->SetPatternType(ListPatternType::DecimalEnclosedParen);
    listStyle->GetLevels()->GetItem(0)->SetTextPosition(20);
    document->GetListStyles()->Add(listStyle);

    //段落を追加する
    intrusive_ptr<Paragraph> paragraph = section->AddParagraph();
    paragraph->AppendText(L"Web開発に必要なスキル:");
    paragraph->GetFormat()->SetAfterSpacing(5);

    //段落を追加して番号付きリストのスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"HTML");
    paragraph->GetListFormat()->ApplyStyle(L"numberedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //4つの段落を追加し、番号付きリストのスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"CSS");
    paragraph->GetListFormat()->ApplyStyle(L"numberedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"C++Script");
    paragraph->GetListFormat()->ApplyStyle(L"numberedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"Python");
    paragraph->GetListFormat()->ApplyStyle(L"numberedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"MySQL");
    paragraph->GetListFormat()->ApplyStyle(L"numberedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //結果文書を保存する
document->SaveToFile(L"output/NumberedList.docx", FileFormat::Docx2019);
document->Dispose();
}

C++:Word 文書にリストを挿入する方法

C++ で Word に箇条書きリストを挿入する

箇条書きの作成は、番号付きリストを作成するプロセスと似ています。しかし、リストのスタイルを作成するときに、 [Bulleted] として指定してください。また、箇条書き記号も設定してください。次は詳細な手順です。

  • Document オブジェクトを作成します。
  • Document->AddSection() メソッドを使用してセクションを追加します。
  • ListStyle クラスのインスタンスを作成し、リストの種類を「Bulleted」に指定します。
  • ListStyle->GetLevels()->Get(index) メソッドを使用してリストの特定のレベルを取得します。
  • ListLevel->SetBulletCharacter() メソッドを使用して箇条書き符号を設定します。
  • Document->GetListStyles()->Add() メソッドを使用して、リストのスタイルをドキュメントに追加します。
  • Section->AddParagraph() メソッドを使用して、ドキュメントに複数の段落を追加します。
  • Paragraph->GetListFormat()->ApplyStyle() メソッドを使用して、特定の段落にリストのスタイルを適用します。
  • Paragraph->GetListFormat()->SetListLevelNumber() メソッドを使用してリストレベルを指定します。
  • Document->SaveToFile() メソッドを使用して、結果文書を保存します。
  • C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

    //Documentオブジェクトを作成する
    intrusive_ptr<Document> document = new Document();

    //セクションを追加する
    intrusive_ptr<Section> section = document->AddSection();

    //箇条書きリストのスタイルを作成する
    intrusive_ptr<ListStyle> listStyle = new ListStyle(document, ListType::Bulleted);
    listStyle->SetName(L"bulletedList");
    listStyle->GetLevels()->GetItem(0)->SetBulletCharacter(L"\u00B7");
    listStyle->GetLevels()->GetItem(0)->GetCharacterFormat()->SetFontName(L"Symbol");
    listStyle->GetLevels()->GetItem(0)->SetTextPosition(20);
    document->GetListStyles()->Add(listStyle);

    //段落を追加する
    intrusive_ptr<Paragraph> paragraph = section->AddParagraph();
    paragraph->AppendText(L"Web開発に必要なスキル");
    paragraph->GetFormat()->SetAfterSpacing(5);

    //段落を追加して箇条書きリストのスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"HTML");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //5つの段落を追加し、箇条書きリストのスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"CSS");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"C++Script");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"Python");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"MySQL");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"PHP");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedList");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //結果文書を保存する
document->SaveToFile(L"output/BulletedList.docx", FileFormat::Docx2019);
document->Dispose();
}

C++:Word 文書にリストを挿入する方法

C++ で Word に複数レベル番号付きリストを挿入する

多レベルリストは2つ以上のレベルで構成されています。各レベルは、ListStyle->GetLevels()->GetItem(index) メソッドを使用してアクセスできます。ListLevel オブジェクトを介して、特定のレベルの番号の種類やプレフィックスを設定することができます。次は詳細な手順です。

  • Document オブジェクトを作成します。
  • Document->AddSection() メソッドを使用してセクションを追加します。
  • ListStyle クラスのインスタンスを作成し、リストの種類を「Numbered」 に指定します。
  • ListStyle->GetLevels()->GetItem(index) メソッドを使用してリストの特定のレベルを取得し、番号の種類やプレフィックスを設定します。
  • Document->GetListStyles()->Add() メソッドを使用して、リストスタイルをドキュメントに追加します。
  • Section->AddParagraph() メソッドを使用して、ドキュメントに複数の段落を追加します。
  • Paragraph->GetListFormat()->ApplyStyle() メソッドを使用して、特定の段落にリストスタイルを適用します。
  • Paragraph->GetListFormat()->SetListLevelNumber() メソッドを使用してリストレベルを指定します。
  • Document->SaveToFile() メソッドを使用して、結果文書を保存します。
  • C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

    //Documentオブジェクトを作成する
    intrusive_ptr<Document> document = new Document();

    //セクションを追加する
    intrusive_ptr<Section> section = document->AddSection();

    //番号付きリストスタイルを作成し、各レベルのプレフィックスとパターンタイプを指定する
    intrusive_ptr<ListStyle> listStyle = new ListStyle(document, ListType::Numbered);
    listStyle->SetName(L"nestedStyle");
    listStyle->GetLevels()->GetItem(0)->SetPatternType(ListPatternType::Arabic);
    listStyle->GetLevels()->GetItem(0)->SetTextPosition(20);
    listStyle->GetLevels()->GetItem(1)->SetNumberPrefix(L"%1.");
    listStyle->GetLevels()->GetItem(1)->SetPatternType(ListPatternType::Arabic);
    listStyle->GetLevels()->GetItem(2)->SetNumberPrefix(L"%1.%2.");
    listStyle->GetLevels()->GetItem(2)->SetPatternType(ListPatternType::Arabic);
    document->GetListStyles()->Add(listStyle);

    //段落を追加する
    intrusive_ptr<Paragraph> paragraph = section->AddParagraph();
    paragraph->AppendText(L"複数レベル番号付きリスト:");
    paragraph->GetFormat()->SetAfterSpacing(5);

    //段落を追加して番号付けリストのスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The first item");
    paragraph->GetListFormat()->ApplyStyle(L"nestedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //5つの段を追加し、番号付けリストのスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The second item");
    paragraph->GetListFormat()->ApplyStyle(L"nestedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The first sub-item");
    paragraph->GetListFormat()->ApplyStyle(L"nestedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(1);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The second sub-item");
    paragraph->GetListFormat()->ContinueListNumbering();
    paragraph->GetListFormat()->ApplyStyle(L"nestedStyle");

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"A sub-sub-item");
    paragraph->GetListFormat()->ApplyStyle(L"nestedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(2);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The third item");
    paragraph->GetListFormat()->ApplyStyle(L"nestedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //結果文書を保存する
    document->SaveToFile(L"output/MultilevelNumberedList.docx", FileFormat::Docx2019);
    document->Dispose();
}

C++:Word 文書にリストを挿入する方法

C++ で Word に複数レベル混合型リストを挿入する

多レベルリストで数字と記号を同時に使用したい場合があります。この機能を実現するには、番号付きリストスタイルと箇条書きリストスタイルを作成し、それらを異なる段落に適用するだけです。詳細な手順は次のとおりです。

  • Document オブジェクトを作成します。
  • Document->AddSection() メソッドを使用してセクションを追加します。
  • 番号付きリスト スタイルと箇条書きリスト スタイルを作成します。
  • Section->AddParagraph() メソッドを使用して、ドキュメントに複数の段落を追加します。
  • Paragraph->GetListFormat()->ApplyStyle() メソッドを使用して、異なる段落に異なるリストスタイルを適用します。
  • Document->SaveToFile() メソッドを使用して、結果文書を保存します。
  • C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

    //Documentオブジェクトを作成する
    intrusive_ptr<Document> document = new Document();

    //セクションを追加する
    intrusive_ptr<Section> section = document->AddSection();

    //番号付きリストスタイルを作成する
    intrusive_ptr<ListStyle> numberedListStyle = new ListStyle(document, ListType::Numbered);
    numberedListStyle->SetName(L"numberedStyle");
    numberedListStyle->GetLevels()->GetItem(0)->SetPatternType(ListPatternType::Arabic);
    numberedListStyle->GetLevels()->GetItem(0)->SetTextPosition(20);
    numberedListStyle->GetLevels()->GetItem(1)->SetPatternType(ListPatternType::LowLetter);
    document->GetListStyles()->Add(numberedListStyle);

    //箇条書きリストスタイルを作成する
    intrusive_ptr<ListStyle> bulletedListStyle = new ListStyle(document, ListType::Bulleted);
    bulletedListStyle->SetName(L"bulletedStyle");
    bulletedListStyle->GetLevels()->GetItem(2)->SetBulletCharacter(L"\u002A");
    bulletedListStyle->GetLevels()->GetItem(2)->GetCharacterFormat()->SetFontName(L"Symbol");
    document->GetListStyles()->Add(bulletedListStyle);

    //段落を追加する
    intrusive_ptr<Paragraph> paragraph = section->AddParagraph();
    paragraph->AppendText(L"多レベル混合型リスト:");
    paragraph->GetFormat()->SetAfterSpacing(5);

    //段落を追加して番号付きリストのスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The first item");
    paragraph->GetListFormat()->ApplyStyle(L"numberedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //5つの段落を追加し、異なるリストスタイルを適用する
    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The first sub-item");
    paragraph->GetListFormat()->ApplyStyle(L"numberedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(1);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The second sub-item");
    paragraph->GetListFormat()->SetListLevelNumber(1);
    paragraph->GetListFormat()->ApplyStyle(L"numberedStyle");

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The first sub-sub-item");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(2);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The second sub-sub-item");
    paragraph->GetListFormat()->ApplyStyle(L"bulletedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(2);

    paragraph = section->AddParagraph();
    paragraph->AppendText(L"The second item");
    paragraph->GetListFormat()->ApplyStyle(L"numberedStyle");
    paragraph->GetListFormat()->SetListLevelNumber(0);

    //結果文書を保存する
document->SaveToFile(L"output/MultilevelMixedList.docx", FileFormat::Docx);
document->Dispose();
}

C++:Word 文書にリストを挿入する方法

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

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

Excel のデータ検証では、セルに入力される情報の種類を制限できます。この機能を使用すると、特定のデータタイプ(数値や日付など)をセル内に制限したり、数値を特定の範囲内に制限したり、テキストを特定の長さに制限したりできます。また、ユーザーが選択できるように、ドロップダウンメニューに事前定義された値のリストを提供することもできます。この記事では、Spire.XLS for C++ を使用して C++ で Excel でデータの入力規則を適用または削除する方法について説明します。

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

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

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

Excel でセルへのデータ検証を適用する

Spire.XLS for C++ では、数字、日付、テキスト値、リストなどの検証規則を作成できます。以下は、Excel の指定されたセルに異なるデータ検証タイプを適用する手順です。

  • Workbook オブジェクトを作成します。
  • Workbook->GetWorksheets()->Get() メソッドを使用して、指定されたワークシートを取得します。
  • Worksheet->GetRange() メソッドを使用して特定のセルを取得します。
  • CellRange->GetDataValidation()->SetAllowType() メソッドを使用して、セルのデータ型を設定します。Decimal、Time、Date、TextLength、Integer など、さまざまなデータ型を選択してください。
  • CellRange->GetDataValidation()->SetCompareOperator() メソッドを使用して、比較演算子を設定します。比較演算子には Between、NotBetween、Less、Greater、Equal が含まれます。
  • CellRange->GetDataValidation()->SetFormula1() および CellRange->GetDataValidation()->SetFormula2() メソッドを使用して、データ検証のの1つまたは2つの式を設定します。
  • CellRange->GetDataValidation()->SetInputMessage() メソッドを使用して入力プロンプトを設定します。
  • CellRange->GetDataValidation()->SetErrorMessage() メソッドを使用してエラーメッセージを設定します。
  • 無効なデータが入力された場合にエラーアラートを表示し、そのアラートスタイルを設定します。
  • Workbook->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;

int main() {

	//出力ファイルを指定する
	std::wstring outputFile = L"DataValidation.xlsx";

	//Workbookオブジェクトを作成する
	intrusive_ptr<Workbook> workbook = new Workbook();

	//最初のワークシートを取得する
	intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));

	//指定したセルにテキストを挿入する
	dynamic_pointer_cast<CellRange>(sheet->GetRange(L"B2"))->SetText(L"データ検証: ");
	dynamic_pointer_cast<CellRange>(sheet->GetRange(L"B4"))->SetText(L"日付検証: ");
	dynamic_pointer_cast<CellRange>(sheet->GetRange(L"B6"))->SetText(L"テキストの長さ検証: ");
	dynamic_pointer_cast<CellRange>(sheet->GetRange(L"B8"))->SetText(L"リスト検証: ");
	dynamic_pointer_cast<CellRange>(sheet->GetRange(L"B10"))->SetText(L"時間検証: ");

	//C 2にデータ検証を追加する
	intrusive_ptr<CellRange> rangeNumber = dynamic_pointer_cast<CellRange>(sheet->GetRange(L"C2"));
	rangeNumber->GetDataValidation()->SetAllowType(CellDataType::Decimal);
	rangeNumber->GetDataValidation()->SetCompareOperator(ValidationComparisonOperator::Between);
	rangeNumber->GetDataValidation()->SetFormula1(L"3");
	rangeNumber->GetDataValidation()->SetFormula2(L"6");
	rangeNumber->GetDataValidation()->SetInputMessage(L"1から10の間の数字を入力してください。");
	rangeNumber->GetDataValidation()->SetErrorMessage(L"正しい数値を入力してください。");
	rangeNumber->GetDataValidation()->SetShowError(true);
	rangeNumber->GetDataValidation()->SetAlertStyle(AlertStyleType::Warning);
	rangeNumber->GetStyle()->SetKnownColor(ExcelColors::Gray25Percent);

	//C4に日付検証を追加する
	intrusive_ptr<CellRange> rangeDate = dynamic_pointer_cast<CellRange>(sheet->GetRange(L"C4"));
	rangeDate->GetDataValidation()->SetAllowType(CellDataType::Date);
	rangeDate->GetDataValidation()->SetCompareOperator(ValidationComparisonOperator::Between);
	rangeDate->GetDataValidation()->SetFormula1(L"1/1/2021");
	rangeDate->GetDataValidation()->SetFormula2(L"12/31/2021");
	rangeDate->GetDataValidation()->SetInputMessage(L"1/1/2021から12/31/2021の間の日付を入力してください。");
	rangeDate->GetStyle()->SetKnownColor(ExcelColors::Gray25Percent);

	//C6にテキストの長さ検証を追加する
	intrusive_ptr<CellRange> rangeTextLength = dynamic_pointer_cast<CellRange>(sheet->GetRange(L"C6"));
	rangeTextLength->GetDataValidation()->SetAllowType(CellDataType::TextLength);
	rangeTextLength->GetDataValidation()->SetCompareOperator(ValidationComparisonOperator::LessOrEqual);
	rangeTextLength->GetDataValidation()->SetFormula1(L"5");
	rangeTextLength->GetDataValidation()->SetErrorMessage(L"有効な文字列を入力してください。");
	rangeTextLength->GetDataValidation()->SetShowError(true);
	rangeTextLength->GetDataValidation()->SetAlertStyle(AlertStyleType::Stop);
	rangeTextLength->GetStyle()->SetKnownColor(ExcelColors::Gray25Percent);

	//C8にリストの検証を追加する
	intrusive_ptr<CellRange> rangeList = dynamic_pointer_cast<CellRange>(sheet->GetRange(L"C8"));
	std::vector<LPCWSTR_S> files = { L"アメリカ", L"カナダ", L"イギリス" };
	rangeList->GetDataValidation()->SetValues(files);
	rangeList->GetDataValidation()->SetIsSuppressDropDownArrow(false);
	rangeList->GetDataValidation()->SetInputMessage(L"リストから項目を選択してください。");
	rangeList->GetStyle()->SetKnownColor(ExcelColors::Gray25Percent);

	//C10に時間の検証を適用する
	intrusive_ptr<CellRange> rangeTime = dynamic_pointer_cast<CellRange>(sheet->GetRange(L"C10"));
	rangeTime->GetDataValidation()->SetAllowType(CellDataType::Time);
	rangeTime->GetDataValidation()->SetCompareOperator(ValidationComparisonOperator::Between);
	rangeTime->GetDataValidation()->SetFormula1(L"9:00");
	rangeTime->GetDataValidation()->SetFormula2(L"12:00");
	rangeTime->GetDataValidation()->SetInputMessage(L"9:00から12:00の間の時間を入力してください。");
	rangeTime->GetStyle()->SetKnownColor(ExcelColors::Gray25Percent);

	//列2の幅を自動調整する
	sheet->AutoFitColumn(2);

	//列3の幅を設定する
	sheet->GetColumns()->GetItem(2)->SetColumnWidth(20);

	//結果文書を保存する
	workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);
	workbook->Dispose();
}

C++:Excel でデータの入力規則を適用または削除する方法

Excel でセルからデータ検証を削除する

セルに適用されたデータ検証を削除するために、Spire.XLS for C++ には Worksheet->GetDVTable()->Remove() メソッドが用意されています。詳細な手順は次のとおりです。

  • Workbook オブジェクトを作成します。
  • Workbook->LoadFromFile() メソッドを使用して、データ検証を含むサンプル Excel ドキュメントを読み込みます。
  • Workbook->GetWorksheets()->Get() メソッドを使用して、指定されたワークシートを取得します。
  • 検証を削除するセルを決定するために矩形配列を作成します。
  • Worksheet->GetDVTable()->Remove() メソッドを使用して、選択したセルからデータ検証を削除します。
  • Workbook->SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;

int main() {

	//入出力ファイルを指定する
	std::wstring inputFile = L"DataValidation.xlsx";
	std::wstring outputFile = L"RemoveDataValidation.xlsx";

	//Workbookオブジェクトを作成する 
	intrusive_ptr<Workbook> workbook = new Workbook();

	//ディスクからのExcelドキュメントをロードする
	workbook->LoadFromFile(inputFile.c_str());

	//最初のシートを取得する
	intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));

	//検証を削除するセルを決定するために矩形配列を作成する
	std::vector<intrusive_ptr<Spire::Common::Rectangle>> rectangles(1);

	//配列の最初の要素に値を設定し、矩形に基づいたセル範囲を指定する
	rectangles[0] = Spire::Common::Rectangle::FromLTRB(0, 0, 2, 9);

	//矩形範囲内の検証を削除する
	sheet->GetDVTable()->Remove(rectangles);

	//結果文書を保存する
	workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);
	workbook->Dispose();
}

C++:Excel でデータの入力規則を適用または削除する方法

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

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

Spire.Presentation 8.6.0のリリースを発表できることをうれしく思います。このバージョンは、TextFrameのカラム数の設定がサポートされています。また、結合セルを分割する際にアプリケーションが「Merged cells found.」をスローするなど、既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREPPT-2232 TextFrameのカラム数の設定がサポートされています。
Presentation ppt = new Presentation();
ppt.LoadFromFile(inputFile);
IAutoShape shape1 = (IAutoShape)ppt.Slides[0].Shapes[0];
shape1.TextFrame.ColumnCount = 2;
IAutoShape shape2 = (IAutoShape)ppt.Slides[1].Shapes[0];
shape2.TextFrame.ColumnCount = 3;
ppt.SaveToFile(outputFile, FileFormat.Pptx2013);
ppt.Dispose();
Bug SPIREPPT-2205 保存したPPTのグラフデータを編する際にエラーが発生した問題が修正されました。
Bug SPIREPPT-2221 グラフデータにNULL値がある場合に、行/列を切り替える際にエラーが発生した問題が修正されました。
Bug SPIREPPT-2215
SPIREPPT-2225
統合セルを分割する際にアプリケーションが「Merged cells found.」をスローする問題が修正されました。
Bug SPIREPPT-2212
SPIREPPT-2243
グラフデータの更新が正しくない問題が修正されました。
Bug SPIREPPT-2245
SPIREPPT-2274
GroupShapeを画像に保存すると結果がぼやけてしまう問題が修正されました。
ここで Spire. Presentation 8.6.0をダウンロードする

Spire.Office 8.6.0のリリースを発表できることを嬉しく思います。このバージョンでは、Spire.PDFは複数ページのPDFドキュメントを単一のSVGファイルに変換することがサポートしています。Spire.XLSでは、行の削除速度を最適化するためのメソッドが追加されました。Spire.Presentationでは、 TextFrameのカラム数の設定がサポートされています。さらに、多くの既知の問題も修正しました。詳細は以下の内容を読んでください。

このバージョンでは、Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer, Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet, Spire.OfficeViewer, Spire.Barcode, Spire.DataExportの最新バージョンが含まれています。

DLL Versions:
  • Spire.Doc.dll v11.5.12
  • Spire.Pdf.dll v9.6.0
  • Spire.XLS.dll v13.5.6
  • Spire.Presentation.dll v8.6.0
  • Spire.Email.dll v6.5.7
  • Spire.DocViewer.Forms.dll v8.5.1
  • Spire.PdfViewer.Forms.dll v9.6.0
  • Spire.PdfViewer.Asp.dll v8.5.0
  • Spire.Spreadsheet.dll v7.4.2
  • Spire.OfficeViewer.Forms.dll v8.6.0
  • Spire.Barcode.dll v7.2.1
  • Spire.DataExport.dll v4.8.0
  • Spire.DataExport.ResourceMgr.dll v2.1.0
ここで Spire.Office 8.6.0をダウンロードする:

このリリースで行われた変更のリストは次のとおりです

Spire.PDF

カテゴリー ID 説明
New feature SPIREPDF-5977 複数ページのPDFドキュメントを単一のSVGファイルに変換することがサポートしています。
//ドキュメントをロードする
PdfDocument pdfDocument = new PdfDocument();
pdfDocument.LoadFromFile("input.pdf");
//複数ページ保存PDFを1ページSVGに保存
pdfDocument.ConvertOptions.OutputToOneSvg = true;
//ドキュメントを保存する
pdfDocument.SaveToFile("outpit.svg",FileFormat.SVG);
pdfDocument.Close();
Bug SPIREPDF-1786 ページサイズは同じでも、ページ数が異なるPDF文書の問題が修正されました。
Bug SPIREPDF-5782 テキスト検索が失敗する問題が修正されました。
Bug SPIREPDF-5783 回転した角度のあるテキストを描画できない問題が修正されました。
Bug SPIREPDF-5901
SPIREPDF-5985
OFDをPDFに変換する際にアプリケーションが例外をスローする問題が修正されました。
Bug SPIREPDF-5967 PDFをPPTに変換した後、単語間の空白が消える問題が修正されました。
Bug SPIREPDF-5992 PDFをPPTに変換した後、内容が一致しない問題が修正されました。
Bug SPIREPDF-6000 表の内容を抽出する際に、一部の内容が正しくない問題が修正されました。
Bug SPIREPDF-6004 テキストを正規表現でマッチングする際に、アプリケーションが「System.IndexOutOfRangeException」をスローする問題が修正されました。
Bug SPIREPDF-6006 PDFをExcelに変換した後、セルのフォーマットが正しくない問題が修正されました。
Bug SPIREPDF-5943 Linux環境でPDFをWordドキュメントに変換する時間を最適化しました。

Spire.XLS

カテゴリー ID 説明
New feature SPIREXLS-4560 chartsheetとworksheetを位置間で移動させる2つのメソッドが追加されました。
workbook.Chartsheets[int index1].MoveSheet(int index2);
workbook.Chartsheets[int index1].MoveChartsheet(int index2)
New feature SPIREXLS-4684 行の削除速度を最適化するためのメソッドが追加されました。
Bug SPIREXLS-4587 Sheetを画像に変換した後、ピボットテーブルのフィールドが「Column Labels」と表示される問題が修正されました。
Bug SPIREXLS-4605 XLSX文書をPDFに変換した後、チャートのデータが更新されない問題が修正されました。
Bug SPIREXLS-4614 テキストボックスを追加した際に、「最上位に設定する」機能が動作しない問題が修正されました。
Bug SPIREXLS-4643 XLSX文書をPDFに変換した後、表のスタイルが正しくない問題が修正されました。
Bug SPIREXLS-4644 XLS文書を読み込むときに、アプリケーションが「Syste.OverflowException」をスローする問題が修正されました。
Bug SPIREXLS-4645 セルから取得されたデータのフォーマットが正しくない問題が修正されました。
Bug SPIREXLS-4646 HTMLコンテンツを追加した後、アプリケーションが「System.FormatException」をスローする問題が修正されました。
Bug SPIREXLS-4665 MoveWorksheetメソッドを2回呼び出した後にchartsheetを取得できなくなる問題が修正されました。
Bug SPIREXLS-4666 セルに中国語の文字が含まれている場合、AutoFitColumnsを設定してもテキストがセルからはみ出す問題が修正されました。
Bug SPIREXLS-4673 XLSX文書をHTMLに変換した後、背景色が一致しない問題が修正されました。
Bug SPIREXLS-4678 XLS文書を読み込むときに、アプリケーションが「This structured storage version is not supported.」をスローする問題が修正されました。
Bug SPIREXLS-4681 追加されたHTML strongタグのスタイル識別に失敗する問題が修正されました。

Spire.Presentation

カテゴリー ID 説明
New feature SPIREPPT-2232 TextFrameのカラム数の設定がサポートされています。
Presentation ppt = new Presentation();
ppt.LoadFromFile(inputFile);
IAutoShape shape1 = (IAutoShape)ppt.Slides[0].Shapes[0];
shape1.TextFrame.ColumnCount = 2;
IAutoShape shape2 = (IAutoShape)ppt.Slides[1].Shapes[0];
shape2.TextFrame.ColumnCount = 3;
ppt.SaveToFile(outputFile, FileFormat.Pptx2013);
ppt.Dispose();
Bug SPIREPPT-2205 保存したPPTのグラフデータを編する際にエラーが発生した問題が修正されました。
Bug SPIREPPT-2221 グラフデータにNULL値がある場合に、行/列を切り替える際にエラーが発生した問題が修正されました。
Bug SPIREPPT-2215
SPIREPPT-2225
統合セルを分割する際にアプリケーションが「Merged cells found.」をスローする問題が修正されました。
Bug SPIREPPT-2212
SPIREPPT-2243
グラフデータの更新が正しくない問題が修正されました。
Bug SPIREPPT-2245
SPIREPPT-2274
GroupShapeを画像に保存すると結果がぼやけてしまう問題が修正されました。

Spire.Doc

カテゴリー ID 説明
Bug SPIREDOC-8643 文書をロードする際にアプリケーションが「System.InvalidCastException」をスローした問題が修正されました。
Bug SPIREDOC-8946 WordをHTMLに変換した後にコンテンツが失われていた問題が修正されました。
Bug SPIREDOC-9217 Word文書をロードする際にアプリケーションが「System.InvalidOperationException」をスローした問題が修正されました。
Bug SPIREDOC-9288 Word文書をマージする際にアプリケーションが「System.ArgumentException」をスローした問題が修正されました。
Bug SPIREDOC-9293 WordをPDFに変換した後にテキストのインデントエラーの問題が修正されました。
Bug SPIREDOC-9294 WordをPDFに変換した後の文書の右余白が正しくない問題が修正されました。
Bug SPIREDOC-9295 WordをPDFに変換した後にテーブルが整列していない問題が修正されました。
Bug SPIREDOC-9377 WordをHTMLに変換した後にコンテンツの文字化けの問題が修正されました。

Spire.PDF 9.6.0のリリースを発表できることを嬉しく思います。このバージョンでは、複数ページのPDFドキュメントを単一のSVGファイルに変換することができます。また、PDFからWord、Excel、PPTへの、OFDからPDFへの変換機能も強化されました。テキスト検索に失敗した問題など、多くの既知の問題も修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREPDF-5977 複数ページのPDFドキュメントを単一のSVGファイルに変換することがサポートしています。
//ドキュメントをロードする
PdfDocument pdfDocument = new PdfDocument();
pdfDocument.LoadFromFile("input.pdf");
//複数ページ保存PDFを1ページSVGに保存
pdfDocument.ConvertOptions.OutputToOneSvg = true;
//ドキュメントを保存する
pdfDocument.SaveToFile("outpit.svg",FileFormat.SVG);
pdfDocument.Close();
Bug SPIREPDF-1786 ページサイズは同じでも、ページ数が異なるPDF文書の問題が修正されました。
Bug SPIREPDF-5782 テキスト検索が失敗する問題が修正されました。
Bug SPIREPDF-5783 回転した角度のあるテキストを描画できない問題が修正されました。
Bug SPIREPDF-5901
SPIREPDF-5985
OFDをPDFに変換する際にアプリケーションが例外をスローする問題が修正されました。
Bug SPIREPDF-5967 PDFをPPTに変換した後、単語間の空白が消える問題が修正されました。
Bug SPIREPDF-5992 PDFをPPTに変換した後、内容が一致しない問題が修正されました。
Bug SPIREPDF-6000 表の内容を抽出する際に、一部の内容が正しくない問題が修正されました。
Bug SPIREPDF-6004 テキストを正規表現でマッチングする際に、アプリケーションが「System.IndexOutOfRangeException」をスローする問題が修正されました。
Bug SPIREPDF-6006 PDFをExcelに変換した後、セルのフォーマットが正しくない問題が修正されました。
Bug SPIREPDF-5943 Linux環境でPDFをWordドキュメントに変換する時間を最適化しました。
ここで Spire.PDF 9.6.0をダウンロードする
2つの PowerPoint プレゼンテーションを処理するときに、特定のスライドを1つのプレゼンテーションから別のプレゼンテーションの指定された場所にコピーする場合は、プログラミングによってこの機能を実現します。手動でコピーして貼り付けるよりも、Java コードを使用した自動操作の方法がより迅速で効果的です。この記事では、Spire.Presentation for Java を使用して2 つの異なる PowerPoint 文書間でスライドをコピーする方法を示します。

Spire.Presentation for Java をインストールします

まず、Spire.Presentation 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.presentation</artifactId>
        <version>8.5.2</version>
    </dependency>
</dependencies>

2つの PowerPoint 文書間でスライドをコピーする

Spire.Presentation for Java が提供する Presentation.getSlides().insert()Presentation.getSlides().append() メソッドは、それぞれ指定された場所へのスライドの挿入と追加をサポートします。以下に詳細な操作方法を示します。

  • Presentation オブジェクトを作成する。
  • Presentation.loadFromFile() メソッドを使用して sample1 を読み込みます。
  • 別の Presentation オブジェクトを作成する。
  • Presentation.loadFromFile() メソッドを使用して sample2 を読み込みます。
  • Presentation.getSlides().get() メソッドを使用して sample1 の特定のスライドを取得し、Presentation.getSlides().insert() メソッドを使用して sample2 の指定された位置にそのコピーを挿入します。
  • Presentation.getSlides().get() メソッドを使用して sample1 の別の特定のスライドを取得し、Presentation.getSlides().append() メソッドを使用して sample2 の最後にそのコピーを追加します。
  • Presentation.saveToFile() メソッドを使用して、sample2 を別のファイルに保存します。
  • Java
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;

public class CopySlidesBetweenPPT {
    public static void main(String[] args) throws Exception {
        //sample1をロードするためのPresentationオブジェクトを作成する
        Presentation pptOne= new Presentation();
        pptOne.loadFromFile("sample1.pptx");

        //sample2をロードするための別のPresentationオブジェクトを作成する
        Presentation pptTwo = new Presentation();
        pptTwo.loadFromFile("sample2.pptx");

        //sample1のスライドをsample2の指定された場所に挿入する
        pptTwo.getSlides().insert(0,pptOne.getSlides().get(0));

        //sample1のスライドをsample2の最後に追加する
        pptTwo.getSlides().append(pptOne.getSlides().get(3));

        //sample2を別のファイルに保存する
        pptTwo.saveToFile("output/CopySlidesBetweenPPT.pptx", FileFormat.PPTX_2013);
        pptTwo.dispose();
    }
}

Java:2つの PowerPoint 文書間でスライドをコピーする方法

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

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

変更履歴とは、Word ドキュメントの機能で、ドキュメントに加えられたすべての変更を確認し、その変更を承諾するか元に戻すかを決定することができるものです。特に、同じ契約書や学校の課題で複数の人と共同作業をしている場合に非常に便利です。この記事では、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> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>11.4.2</version>
    </dependency>
</dependencies>

Word ドキュメントですべての変更履歴を承諾する

詳しい手順は以下の通りです。

  • Document のインスタンスを作成します。
  • Document.loadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document.acceptChanges() メソッドを使用して、ドキュメントのすべての変更を承諾します。
  • Document.saveToFile() メソッドを使用してドキュメントを保存します。
  • Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class AcceptTrackedChanges {
    public static void main(String[] args) {

        //Documentのインスタンスを作成する
        Document doc = new Document();

        //Wordドキュメントを読み込む
        doc.loadFromFile("C:/変更履歴.docx");

        //ドキュメントのすべての変更を承諾する
        doc.acceptChanges();

        //ドキュメントを保存する
        doc.saveToFile("すべての変更の承諾.docx", FileFormat.Docx);
    }
}

Java:Word ドキュメントで変更履歴を承諾または元に戻す方法

Word ドキュメントですべての変更履歴を元に戻す

詳しい手順は以下の通りです。

  • Document のインスタンスを作成します。
  • Document.loadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document.rejectChanges() メソッドを使用して、ドキュメント内のすべての変更を元に戻します。
  • Document.saveToFile() メソッドを使用してドキュメントを保存します。
  • Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class RejectTrackedChanges {
    public static void main(String[] args) {

        //Documentのインスタンスを作成する
        Document doc = new Document();

        //Wordドキュメントを読み込む
        doc.loadFromFile("C:/変更履歴.docx");

        //ドキュメントのすべての変更を元に戻す
        doc.rejectChanges();

        //ドキュメントを保存する
        doc.saveToFile("すべての変更を元に戻す.docx", FileFormat.Docx);
    }
}

Java:Word ドキュメントで変更履歴を承諾または元に戻す方法

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

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

Spire.XLS 13.5.6のリリースをお知らせいたします。このバージョンでは、行の削除速度を最適化するためのメソッドが追加され、chartsheetとworksheetを位置間で移動させる2つのメソッドが追加されました。ExcelからPDFや画像への変換機能も強化されました。また、テキストボックスを追加した際に、「最上位に設定」機能が動作しないなど、既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREXLS-4560 chartsheetとworksheetを位置間で移動させる2つのメソッドが追加されました。
workbook.Chartsheets[int index1].MoveSheet(int index2);
workbook.Chartsheets[int index1].MoveChartsheet(int index2)
New feature SPIREXLS-4684 行の削除速度を最適化するためのメソッドが追加されました。
Bug SPIREXLS-4587 Sheetを画像に変換した後、ピボットテーブルのフィールドが「Column Labels」と表示される問題が修正されました。
Bug SPIREXLS-4605 XLSX文書をPDFに変換した後、チャートのデータが更新されない問題が修正されました。
Bug SPIREXLS-4614 テキストボックスを追加した際に、「最上位に設定する」機能が動作しない問題が修正されました。
Bug SPIREXLS-4643 XLSX文書をPDFに変換した後、表のスタイルが正しくない問題が修正されました。
Bug SPIREXLS-4644 XLS文書を読み込むときに、アプリケーションが「Syste.OverflowException」をスローする問題が修正されました。
Bug SPIREXLS-4645 セルから取得されたデータのフォーマットが正しくない問題が修正されました。
Bug SPIREXLS-4646 HTMLコンテンツを追加した後、アプリケーションが「System.FormatException」をスローする問題が修正されました。
Bug SPIREXLS-4665 MoveWorksheetメソッドを2回呼び出した後にchartsheetを取得できなくなる問題が修正されました。
Bug SPIREXLS-4666 セルに中国語の文字が含まれている場合、AutoFitColumnsを設定してもテキストがセルからはみ出す問題が修正されました。
Bug SPIREXLS-4673 XLSX文書をHTMLに変換した後、背景色が一致しない問題が修正されました。
Bug SPIREXLS-4678 XLS文書を読み込むときに、アプリケーションが「This structured storage version is not supported.」をスローする問題が修正されました。
Bug SPIREXLS-4681 追加されたHTML strongタグのスタイル識別に失敗する問題が修正されました。
ここで Spire.XLS 13.5.6をダウンロードする

ドキュメントの比較とは、異なる貢献者による変更を識別するために、新しいバージョンのドキュメントを以前のコピーと照合するプロセスです。これらの違いには、単語、文章、段落の追加や削除、書式の調整などが含まれます。この記事では、Spire.Doc for Java を使用して、Java で2つの Word ドキュメントを比較する方法について説明します。

以下は、比較対象となる2つの Word ドキュメントの表示画像です。

Java:2つの 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> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>11.4.2</version>
    </dependency>
</dependencies>

2つのドキュメントを比較し、結果を保存する

比較結果を別の Word ドキュメントに保存すると、挿入、削除、書式の変更など、元のドキュメントに加えられたすべての変更を確認することができます。以下は、Spire.Doc for Java を使用して、2つのドキュメントを比較し、その結果を3つ目の Word ドキュメントに保存する手順です。

  • Document のオブジェクトを2つ作成します。
  • Document.loadFromFile() メソッドを用いて、2つの Word ドキュメントを読み込みます。
  • Document.compare() メソッドを使用して、2つのドキュメントを比較します。
  • Document.saveToFile() メソッドを使用して、結果を3番目の Word ドキュメントに保存します。
  • Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class CompareDocuments {

    public static void main(String[] args) {

        //Documentのオブジェクトを2つ作成する
        Document doc1 = new Document();
        Document doc2 = new Document();

        //Wordドキュメントを読み込む
        doc1.loadFromFile("C:/比較1.docx");

        //他のWordドキュメントを読み込む
        doc2.loadFromFile("C:/比較2.docx");

        //2つのドキュメントを比較する
        doc1.compare(doc2, "John");

        //相違点を第3のドキュメントに保存する
        doc1.saveToFile("相違点.docx", FileFormat.Docx_2013);
        doc1.dispose();
    }
}

Java:2つの Word ドキュメントを比較する方法

2つのドキュメントを比較し、挿入と削除を返す

時には、全体の差分ではなく、挿入と削除だけを気にすることがあります。以下は、2つのリストで挿入と削除を取得する手順です。

  • Document のオブジェクトを2つ作成する。
  • Document.loadFromFile() メソッドを使用して、2つの Word ドキュメントを読み込みます。
  • Document.compare() メソッドを使用して、2つのドキュメントを比較します。
  • DifferRevisions のコンストラクタ関数を使用して、リビジョンを取得します。
  • DifferRevisions.getInsertRevisions() メソッドを使用して、挿入のリストを取得します。
  • DifferRevisions.getDeleteRevisions() メソッドを使用して削除のリストを取得します。
  • 2つのリストの要素をループして、特定の挿入と削除を取得します。
  • Java
import com.spire.doc.DifferRevisions;
import com.spire.doc.Document;
import com.spire.doc.DocumentObject;
import com.spire.doc.fields.TextRange;
import com.spire.ms.System.Collections.Generic.List;

public class CompareReturnResultsInLists {

    public static void main(String[] args) {

        //Documentのオブジェクトを2つ作成する
        Document doc1 = new Document();
        Document doc2 = new Document();

        //Wordドキュメントを読み込む
        doc1.loadFromFile("C:/比較1.docx");

        //他のWordドキュメントを読み込む
        doc2.loadFromFile("C:/比較2.docx");

        //2つのWordドキュメントを比較する
        doc1.compare(doc2, "Author");

        //改訂を取得する
        DifferRevisions differRevisions = new DifferRevisions(doc1);

        //挿入改訂をリストで返す
        List insertRevisionsList = differRevisions.getInsertRevisions();

        //削除改訂をリストで返す
        List  deleteRevisionsList = differRevisions.getDeleteRevisions();

        //2つのint変数を作成する
        int m = 0;
        int n = 0;

        //挿入改訂リストをループする
        for (int i = 0; i < insertRevisionsList.size(); i++)
        {
            if (insertRevisionsList.get(i) instanceof TextRange)
            {
                m += 1;
                //特定の改訂を取得し、その内容を取得する
                TextRange textRange = (TextRange)insertRevisionsList.get(i) ;
                System.out.println("挿入 #" + m + ":" + textRange.getText());
            }
        }
        System.out.println("============================================");
        //削除改訂リストをループする
        for (int i = 0; i < deleteRevisionsList.size() ; i++)
        {
            if (deleteRevisionsList.get(i) instanceof TextRange)
            {
                n += 1;
                //特定の改訂を取得し、その内容を取得する
                TextRange textRange = (TextRange) deleteRevisionsList.get(i) ;
                System.out.println("削除 #" + n + ":" + textRange.getText());
            }
        }
    }
}

Java:2つの Word ドキュメントを比較する方法

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

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

大型文書において、特定の重要情報を素早く見つけるためには、検索機能が非常に有用です。同時に、明るい色でそれらを強調表示することは、読者の注意を引くために効果的な方法です。この記事では、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 日間有効な一時ライセンスを取得してください。