チュートリアル

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

チュートリアル»C++»Spire.XLS for C++»データ»C++:Excel でデータの入力規則を適用または削除する方法
2023-06-06

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

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 日間有効な一時ライセンスを取得してください。

Read 471 times