チュートリアル

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

チュートリアル»C++»Spire.XLS for C++»データ»C++:Excel のワークシートにデータを書き込む
2023-03-23

C++:Excel のワークシートにデータを書き込む

Excel のスプレッドシートはグリッドベースの文書であり、情報を整理するために有機的な方法で使用されています。人々はビジネスや個人の必要に応じてスプレッドシートを作成することがよくあります。多年にわたり、Excel のスプレッドシートは多くの機能を提供し、煩雑なデータ管理プロセスを簡素化する上で重要な役割を果たしてきました。この記事では、Spire.XLS for C++ を使用して C++ で Excel 文書を作成しExcel のシートにデータを書き込む方法について説明します。

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

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

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

セルにテキストまたは数値を書き込む

Spire.XLS for C++ は、Excel 文書とワークシートをそれぞれ表す Workbook クラスと Worksheet クラスを提供しています。ユーザーは、Worksheet->GetRange(int row, int column) メソッドを使用して特定のセルにアクセスできます。その後、CellRange->SetText() または CellRange->SetNumberValue() メソッドを使用してセルにテキスト値または数値を追加します。以下に詳細な手順が示されています。

  • Workbook オブジェクトを作成します。
  • Workbook->GetWorksheets()->Get() メソッドを使用して最初のシートを取得します。
  • Worksheet->GetRange(int row, int column) メソッドを使用して特定のセルを取得します。
  • CellRange->SetText() または CellRange->SetNumberValue() メソッドを使用して、指定したセルにテキスト値または数値を追加します。
  • Workbook->SaveToFile() メソッドを使用してワークブックを Excel ファイルに保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;

int main() {

	//出力ファイルのパスと名前を指定する
	std::wstring outputPath = L"Output\\";
	std::wstring outputFile = outputPath + L"WriteIndividualValuesToCells.xlsx";

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

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

	//指定したセルにテキストと数を書き込む
	sheet->GetRange(1, 1)->SetText(L"名前");
	sheet->GetRange(1, 2)->SetText(L"年齢");
	sheet->GetRange(1, 3)->SetText(L"部門");
	sheet->GetRange(1, 4)->SetText(L"雇用日");
	sheet->GetRange(1, 1)->SetText(L"名前");
	sheet->GetRange(2, 1)->SetText(L"中村");
	sheet->GetRange(2, 2)->SetNumberValue(29);
	sheet->GetRange(2, 3)->SetText(L"研究部門");
	sheet->GetRange(2, 4)->SetText(L"2021-02-26");
	sheet->GetRange(3, 1)->SetText(L"田中");
	sheet->GetRange(3, 2)->SetNumberValue(27);
	sheet->GetRange(3, 3)->SetText(L"生産部門");
	sheet->GetRange(3, 4)->SetText(L"2020-07-13");
	sheet->GetRange(4, 1)->SetText(L"小林");
	sheet->GetRange(4, 2)->SetNumberValue(35);
	sheet->GetRange(4, 3)->SetText(L"営業部門");
	sheet->GetRange(4, 4)->SetText(L"2019-04-01");

	//列幅を自動調整する
	sheet->GetAllocatedRange()->AutoFitColumns();

	//最初の行にスタイルを適用する
	CellStyle* style = workbook->GetStyles()->Add(L"newStyle");
	style->GetFont()->SetIsBold(true);
	sheet->GetRange(1, 1, 1, 4)->SetStyle(style);

	//ファイルに保存する
	workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);
	workbook->Dispose();
}

C++:Excel のワークシートにデータを書き込む

指定されたセル範囲に配列を書き込む

Spire.XLS for C++ は、Worksheet->InsertArray() メソッドを提供し、プログラマーがシートの指定されたセル範囲にコンテナを書き込むことができます。シートに配列を書き込む前に、配列をコンテナに変換する必要があります。以下に詳細な手順が示されています。

  • Workbook オブジェクトを作成します。
  • Workbook->GetWorksheets()->Get() メソッドを使用して最初のワークシートを取得します。
  • 配列を作成し、1つまたは複数のコンテナに変換します。
  • Worksheet->InsertArray() メソッドを使用してコンテナをワークシートに挿入します。
  • Workbook->SaveToFile() メソッドを使用してワークブックを Excel ファイルに保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;
using namespace std;

int main() {

	//出力ファイルのパスと名前を指定する
	wstring outputPath = L"Output\\";
	wstring outputFile = outputPath + L"WriteArraysToCellRanges.xlsx";

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

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

	//1次元配列を作成する	
	wstring oneDimensionalArray[6] = { L"月曜日", L"火曜日", L"水曜日", L"木曜日", L"金曜日", L"土曜日" };

	//配列をコンテナに変換する
	vector<LPCWSTR> vec;
	for (size_t i = 0; i < sizeof(oneDimensionalArray) / sizeof(oneDimensionalArray[0]); i++)
	{
		vec.push_back(oneDimensionalArray[i].c_str());
	}

	//シートにコンテナを挿入する
	sheet->InsertArray(vec, 1, 1, false);

	//2次元配列を作成する
	wstring twoDimensionalArray[4][5] = {
		{L"名前", L"年齢", L"性別", L"部門", L"電話番号"},
		{L"中村", L"25", L"男性", L"研究部門", L"654214"},
		{L"田中", L"24", L"女性", L"生産部門", L"624847"},
		{L"小林", L"26", L"女性", L"営業部門", L"624758"}
	};

	//行番号と列番号を取得する
	int rowNum = sizeof(twoDimensionalArray) / sizeof(twoDimensionalArray[0]);
	int columnNum = sizeof(twoDimensionalArray[0]) / sizeof(twoDimensionalArray[0][0]);

	//2 D配列を複数の1 Dコンテナに分割する
	for (size_t i = 0; i < rowNum; i++)
	{
		vector<LPCWSTR> vec_temp;
		for (size_t j = 0; j < columnNum; j++)
		{
			vec_temp.push_back(twoDimensionalArray[i][j].c_str());
		}

		//シートにコンテナを挿入する
		sheet->InsertArray(vec_temp, 4 + i, 1, false);
	}

	//列幅を自動調整する
	sheet->GetAllocatedRange()->AutoFitColumns();

	//最初の行にスタイルを適用する
	CellStyle* style = workbook->GetStyles()->Add(L"newStyle");
	style->GetFont()->SetIsBold(true);
	sheet->GetRange(1, 1, 1, 6)->SetStyle(style);
	sheet->GetRange(4, 1, 4, 5)->SetStyle(style);

	//ファイルに保存する
	workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2016);
	workbook->Dispose();
}

C++:Excel のワークシートにデータを書き込む

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

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

Read 661 times