セルの結合と分割は、Microsoft Excel の2つの重要な機能で、より整理された、視覚的に魅力的なスプレッドシートを作成することができます。セルの結合は、隣接するセルを結合して、複数の列や行にまたがる1つのセルを作成することができます。この機能は、表のヘッダー、タイトル、ラベルを作成したり、データをより簡潔な形式にまとめたりする際に特に便利です。 一方、セルの分割は、結合されたセルを複数のセルに分割する処理です。この機能は、結合されたセル内のデータを分割する場合や、異なる書式やスタイルをセルに適用する必要がある場合に使用できます。 この記事では、Spire.XLS for C++ を使用して C++ で Excel のセルを結合または分割する方法について説明します。 Excel で特定のセルを結合する Excel で特定の結合されたセルを分割する Excel ですべての結合されたセルを分割する Spire.XLS for C++ をインストールします Spire.XLS for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。 Spire.XLS for C++ を C++ アプリケーションに統合する方法 Excel で特定のセルを結合する Spire.XLS for C++ が提供する IXLSRange->Merge() メソッドを使用して、特定の範囲のセルを結合することができます。詳細な手順は次のとおりです。 Workbook のインスタンスを初期化します。 Workbook->LoadFromFile(LPCWSTR_S fileName) メソッドを使用して Excel ファイルを読み込みます。 Workbbok->GetWorksheets()->Get(int index) メソッドを使用して、特定のワークシートを取得します。 Worksheet->GetRange(LPCWSTR_S name) メソッドを使用して、特定のセル範囲を取得します。 IXLSRange->Merge() メソッドを使用してセル範囲を結合します。 IXLSRange->GetStyle()->SetHorizontalAlignment(HorizontalAlignType::Center) メソッドを使用して、そのセルのテキストを中央揃えに設定します。 Workbook->SaveToFile(LPCWSTR_S fileName, ExcelVersion version) メソッドを使用して、結果文書を保存します。 C++ #include "Spire.Xls.o.h"; using namespace Spire::Xls; using namespace std; int main() { //入出力ファイルパスを指定する wstring inputFile = L"Template.xlsx"; wstring outputFile = L"MergeCells.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)); //特定の範囲を結合する intrusive_ptr<IXLSRange> range = sheet->GetRange(L"A1:E1"); range->Merge(); //セルのテキストを中央揃えに設定する range->GetStyle()->SetHorizontalAlignment(HorizontalAlignType::Center); //結果文書を保存する workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013); workbook->Dispose(); } Excel で結合されたセルを分割する 結合されたセルを分割するには、IXLSRange->UnMerge() メソッドを使用してください。詳細な手順は次のとおりです。 Workbook のインスタンスを初期化します。 Workbook->LoadFromFile(LPCWSTR_S fileName) メソッドを使用して Excel ファイルを読み込みます。 Workbbok->GetWorksheets()->Get(int index) メソッドを使用して、特定のワークシートを取得します。 Worksheet->GetRange(LPCWSTR_S name) メソッドを使用して、特定のセル範囲を取得します。 IXLSRange->UnMerge() メソッドを使用して、そのセルを分割します。 Workbook->SaveToFile(LPCWSTR_S fileName, ExcelVersion version) メソッドを使用して、結果文書を保存します。 C++ #include "Spire.Xls.o.h"; using namespace Spire::Xls; using namespace std; int main() { //入出力ファイルパスを指定する wstring inputFile = L"MergeCells.xlsx"; wstring outputFile = L"UnmergeCells.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)); //セルを分割する intrusive_ptr<IXLSRange> range = sheet->GetRange(L"A1"); range->UnMerge(); //結果文書を保存する workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013); workbook->Dispose(); } Excel ですべての結合されたセルを分割する Spire.XLS for C++ には、特定のワークシート内のすべての結合されたセルを取得できる Worksheet->GetMergedCells() メソッドが用意されています。次に、IXLSRange->UnMerge() メソッドを使用してセルを分割できます。詳細な手順は次のとおりです。 Workbook のインスタンスを初期化します。 Workbook->LoadFromFile(LPCWSTR_S fileName) メソッドを使用して、 Excel ファイルを読み込みます。 Workbbok->GetWorksheets()->Get(int index) メソッドを使用して、特定のワークシートを取得します。 Worksheet->GetMergedCells() メソッドを使用して、そのシート内の結合されたセルを取得します。 すべての結合されたセルをループし、IXLSRange->UnMerge() メソッドを使用して結合された各セルを分割します。 Workbook->SaveToFile(LPCWSTR_S fileName, ExcelVersion version) メソッドを使用して、結果文書を保存します。 C++ #include "Spire.Xls.o.h"; using namespace Spire::Xls; using namespace std; int main() { //入出力ファイルパスを指定する wstring inputFile = L"Template.xlsx"; wstring outputFile = L"UnmergeAllCells.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)); //そのシート内の結合されたセルを取得する intrusive_ptr<Spire::Common::IList<XlsRange>> range = sheet->GetMergedCells(); //すべての結合されたセルをループする for (int i = 0; i < range->GetCount(); i++) { intrusive_ptr<XlsRange> cell = range->GetItem(i); //各セルを分割する cell->UnMerge(); } //結果文書を保存する workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013); workbook->Dispose(); } 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。