セルの結合と結合解除は、MicrosoftExcelのシンプルで一般的に使用される機能です。セルの結合は、たとえば、同じ見出しを共有する複数の列を持つワークシートがある場合などのシナリオで役立つ場合があります。列の上のセルを結合して、共通の見出しを付けることができます。結合されたセルが不要になった場合は、同じように簡単に結合を解除できます。 C++アプリケーション内でこれらのタスクを実行する必要がある場合があります。そのために、この記事では、C++を使用してプログラムでExcelワークシートのセルを結合および結合解除する方法について説明します。
- セルをマージおよびアンマージするためのC++API
- C++を使用してExcelワークシートのセルを結合する
- C++を使用してExcelワークシートのセルを結合解除する
- C++を使用してExcelワークシートのセルの範囲をマージする
- C++を使用してExcelワークシートのセルの範囲をマージ解除します
- C++を使用してExcelワークシートの名前付き範囲のセルを結合する
セルをマージおよびアンマージするためのC++API
Aspose.Cells for C++はネイティブC++ライブラリであり、Microsoft Excelをインストールしなくても、Excelファイルを作成、読み取り、変更できます。 APIは、Excelワークシートのセルの結合と結合解除もサポートしています。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。
PM> Install-Package Aspose.Cells.Cpp
C++を使用してExcelワークシートのセルを結合する
この例では、空のExcelワークシートを作成し、以下の手順に従っていくつかのセルを結合します。
- まず、IWorkbookクラスのインスタンスを作成します。
- IWorkbook->GetIWorksheets()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index)メソッドを使用してワークシートを取得します。
- IWorksheet->GetICells()メソッドを使用してセルを取得します。
- ICells->Merge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::Systems::Int32 firstColumn, Aspose::Cells::Systems::Int32 totalRows, Aspose::Cells::Systems::Int32 totalColumns)メソッド。
- 結合されたセルにスタイルを適用します。
- 最後に、IWorkbook->Save(intrusive_ptrAspose::Cells::Systems::String fileName)メソッド。
次のサンプルコードは、C++を使用してExcelワークシートのセルを結合する方法を示しています。
// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");
// 入力Excelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// すべてのセルをフェッチするためにCellsオブジェクトを作成します。
intrusive_ptr<ICells> cells = worksheet->GetICells();
// セルを結合します
cells->Merge(5, 2, 2, 3);
// セルにデータを入れる
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));
// Styleオブジェクトを作成する
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();
// Fontオブジェクトを作成する
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();
// 名前を設定する
font->SetName(new String("Times New Roman"));
// フォントサイズを設定する
font->SetSize(18);
// フォントの色を設定する
font->SetColor(Systems::Drawing::Color::GetCyan());
// テキストを太字にする
font->SetBold(true);
// テキストを斜体にする
font->SetItalic(true);
// 前景色を設定する
style->SetForegroundColor(Systems::Drawing::Color::GetRed());
// パターンを設定する
style->SetPattern(BackgroundType_Solid);
// スタイルを適用する
cells->GetICell(5, 2)->SetIStyle(style);
// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
C++を使用してExcelワークシートのセルを結合解除する
以下は、Excelワークシートのセルを結合解除する手順です。
- IWorkbookクラスを使用してExcelファイルをロードします。
- IWorkbook->GetIWorksheets()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index)メソッドを使用して、結合されたセルを含むワークシートを取得します。
- IWorksheet->GetICells()メソッドを使用してセルを取得します。
- ICells->UnMerge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::Systems::Int32 firstColumn, Aspose::Cells::Systems::Int32 totalRows, Aspose::Cells::Systems::Int32 totalColumns)メソッドを使用してセルをマージ解除します。
- 最後に、IWorkbook->Save(intrusive_ptrAspose::Cells::Systems::String fileName)メソッド。
次のサンプルコードは、C++を使用してExcelワークシートのセルを結合解除する方法を示しています。
// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");
// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");
// 入力Excelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));
// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// すべてのセルをフェッチするためにCellsオブジェクトを作成します。
intrusive_ptr<ICells> cells = worksheet->GetICells();
// セルのマージを解除します。
cells->UnMerge(5, 2, 2, 3);
// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
C++を使用してExcelワークシートのセルの範囲をマージする
以下は、Excelワークシートのセルの範囲をマージする手順です。
- まず、IWorkbookクラスのインスタンスを作成します。
- IWorkbook->GetIWorksheets()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index)メソッドを使用して目的のワークシートを取得します。
- セルにデータを挿入します。
- [IWorksheet->GetICells()->CreateIRange(intrusive_ptrAspose::Cells::Systems::String address)]メソッドを使用して範囲を作成します。
- IRange->Merge()メソッドを使用して範囲をマージします。
- 最後に、IWorkbook->Save(intrusive_ptrAspose::Cells::Systems::String fileName)メソッド。
次のサンプルコードは、C++を使用してExcelワークシートのセルの範囲をマージする方法を示しています。
// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");
// 入力Excelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// A1セルにデータを入力します。
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));
// 範囲を作成する
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
// 範囲を単一のセルにマージ
range->Merge();
// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
C++を使用してExcelワークシートのセルの範囲をマージ解除します
以下は、Excelワークシートのセルの範囲をマージ解除する手順です。
- IWorkbookクラスを使用してExcelファイルをロードします。
- IWorkbook->GetIWorksheets()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index)メソッドを使用して、結合されたセルを含むワークシートを取得します。
- IWorksheet->GetICells()->CreateIRange(intrusive_ptrAspose::Cells::Systems::String address)メソッド。
- IRange->UnMerge()メソッドを使用して範囲をマージ解除します。
- 最後に、IWorkbook->Save(intrusive_ptrAspose::Cells::Systems::String fileName)メソッド。
次のサンプルコードは、C++を使用してExcelワークシートのセルの範囲をマージ解除する方法を示しています。
// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");
// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");
// 入力Excelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));
// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// 範囲を作成する
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
// 範囲のマージを解除
range->UnMerge();
// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
C++を使用してExcelワークシートの名前付き範囲のセルを結合する
Aspose.Cells for C++には、名前付き範囲のセルを結合する機能もあります。これを実現するには、以下の手順に従ってください。
- IWorkbookクラスを使用してExcelファイルをロードします。
- IWorkbook->GetIWorksheets()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index)メソッドを使用してワークシートを取得します。
- IWorksheet->GetICells()->CreateIRange(intrusive_ptrAspose::Cells::Systems::String address)メソッド。
- IRange->SetName(intrusive_ptrAspose::Cells::Systems::String値)メソッド。
- 名前付き範囲にスタイルを作成して適用します。
- IRange->Merge()メソッドを使用して、指定された範囲のセルを結合します。
- 最後に、IWorkbook->Save(intrusive_ptrAspose::Cells::Systems::String fileName)メソッド。
次のサンプルコードは、C++を使用して名前付き範囲のセルをマージする方法を示しています。
// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");
// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");
// 入力Excelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));
// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// 範囲を作成する
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
// 範囲名を設定する
range->SetName(new String("Named_Range"));
// スタイルオブジェクトを定義する
intrusive_ptr<IStyle> style = workbook->CreateIStyle();
// 水平方向の配置を設定します
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);
// StyleFlagオブジェクトを作成します
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();
// 水平方向の配置を設定します to true
styleFlag->SetHorizontalAlignment(true);
// 範囲にスタイルを適用します
range->ApplyIStyle(style, styleFlag);
// 範囲内のデータを配置します
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));
// マージ範囲
range->Merge();
// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
無料ライセンスを取得する
無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。
結論
この記事では、C++を使用してExcelワークシートのセルを結合および結合解除する方法を学習しました。さらに、C++ APIのAspose.Cellsを使用して、範囲と名前付き範囲をマージおよびマージ解除する方法を確認しました。 APIは、公式ドキュメントにアクセスして詳細に調べることができるExcelファイルを操作するための多くの追加機能を提供します。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。