チュートリアル

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

チュートリアル»C++»Spire.XLS for C++»文書操作»C++:Excel ファイルを マージする方法
2023-04-04

C++:Excel ファイルを マージする方法

複数の Excel ファイルに保存されたデータをまとめる必要がある場合、Excel のマージは重要なツールです。例えば、各四半期の売上レポートを1つのファイルに統合することで、全年のデータをより包括的なビューで確認することができます。また、Excel をマージすることで、複数のファイルを切り替えるのではなく、同じ組織化されたワークブックにデータを保存できます。これにより、作業プロセスが効率化され、生産性が向上します。この記事では、Spire.XLS for C++ を使用して C++ で Excel ファイルを マージする方法について説明します。

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

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

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

複数のワークブックを1つにマージする

複数のワークブックを1つにまとめるには、新しいワークブックを作成し、元のワークブックからシートをコピーして新しいワークブックに貼り付けます。具体的な手順は以下の通りです。

  • 元のワークブックのパスをコンテナに入れます。
  • Workbook オブジェクトを初期化します。
  • 新しいワークブックを作成し、デフォルトのシートを削除します。
  • 一時的な Workbook オブジェクトを初期化します。
  • コンテナ内のワークブックをループします。
  • Workbook->LoadFromFile() メソッドを使用して、ワークブックを一時的な Workbook オブジェクトにロードします。
  • ワークブック内のシートをループします。
  • Workbook->GetWorksheets()->AddCopy() メソッドを使用して、各シートを新しいワークブックにコピーします。
  • Workbook->SaveToFile() メソッドを使用して、結果ワークブックをファイルに保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;
using namespace std;

int main()
{
	//ワークブックのパスをコンテナに入れる
	std::vector<std::wstring> files = { L"File1.xlsx", L"File2.xlsx", L"File3.xlsx" };;

	//Workbookオブジェクトを初期化して新しいワークブックを作成する
	Workbook* newWorkbook = new Workbook();
	newWorkbook->SetVersion(ExcelVersion::Version2013);
	//デフォルトのシートを削除する
	newWorkbook->GetWorksheets()->Clear();

	//一時的な Workbook オブジェクトを初期化する
	Workbook* tempWorkbook = new Workbook();

	//コンテナ内のワークブックをループする
	for (auto file : files)
	{
		//現在のワークブックをロードする
		tempWorkbook->LoadFromFile(file.c_str());
		//ワークブック内のすべてのシートをループする
		for (int i = 0; i < tempWorkbook->GetWorksheets()->GetCount(); i++)
		{
			Worksheet* sheet = tempWorkbook->GetWorksheets()->Get(i);
			//各シートを新しいワークブックにコピーする
			(dynamic_cast<XlsWorksheetsCollection*>(newWorkbook->GetWorksheets()))->AddCopy(sheet, WorksheetCopyType::CopyAll);
		}
	}

	//結果ブックをファイルに保存する
	newWorkbook->SaveToFile(L"MergeExcelFiles.xlsx", ExcelVersion::Version2013);
	newWorkbook->Dispose();
	tempWorkbook->Dispose();
	delete newWorkbook;
	delete tempWorkbook;
}

C++:Excel ファイルを マージする方法

複数のワークシートを1つにマージする

元のシートから使用データ範囲をコピーして、目的のシートに貼り付けることで、複数のシートを1つのシートにマージできます。以下の手順では、同じワークブック内の2つのシートを1つにマージする方法を説明します。

  • Workbook オブジェクトを初期化し、Workbook->LoadFromFile() メソッドを使用して Excel ワークブックをロードします。
  • Workbook->GetWorksheets()->Get(int index) メソッドを使用して、特定のシートを取得します(ここでのシートインデックスは0から始まります)。
  • Worksheet->GetAllocatedRange() メソッドを使用して、sheet2 の使用範囲を取得します。
  • Worksheet->GetRange(int row, int column) メソッドを使用して、sheet1 の目的範囲を指定します(ここでの行と列のインデックスは1から始まります)。
  • CellRange->Copy(CellRange destRange) メソッドを使用して、sheet2 の使用範囲を sheet1 の目的範囲にコピーします 。
  • XlsWorksheet->Remove() メソッドを使用して、ブックから sheet2 を削除します。
  • Workbook->SaveToFile() メソッドを使用して、結果ワークブックをファイルに保存します。
  • C++
#include "Spire.Xls.o.h";

using namespace Spire::Xls;
using namespace std;


int main()
{
	//Workbookオブジェクトを初期化する	
	Workbook* workbook = new Workbook();
	//Excelワークブックをロードする
	workbook->LoadFromFile(L"Sample.xlsx");

	//sheet1を取得する
	Worksheet* sheet1 = workbook->GetWorksheets()->Get(0);
	//sheet2を取得する
	Worksheet* sheet2 = workbook->GetWorksheets()->Get(1);

	//sheet2の使用範囲を取得する
	CellRange* sourceRange = sheet2->GetAllocatedRange();
	//sheet1の目的範囲を指定する
	CellRange* destRange = sheet1->GetRange(sheet1->GetLastRow() + 1, 1); 

	//sheet2の使用範囲をsheet1の目的範囲にコピーする
	sourceRange->Copy(destRange);

	//sheet2を削除する
	sheet2->Remove();

	//結果ブックをファイルに保存する
	workbook->SaveToFile(L"MergeExcelWorksheets.xlsx", ExcelVersion::Version2013);
	workbook->Dispose();
	delete workbook;
}

C++:Excel ファイルを マージする方法

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

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

Read 795 times