合併和取消合併單元格是 Microsoft Excel 的一項簡單且常用的功能。合併單元格在某些情況下可能會有所幫助,例如,當您的工作表包含多個共享相同標題的列時。您可以合併列上方的單元格以給它們一個共同的標題。如果不再需要合併的單元格,您可以同樣輕鬆地取消合併它們。您可能需要在 C++ 應用程序中執行這些任務。為此,本文將教您如何使用 C++ 以編程方式合併和取消合併 Excel 工作表中的單元格。

用於合併和取消合併單元格的 C++ API

Aspose.Cells for C++ 是一個本地 C++ 庫,允許您創建、讀取和修改 Excel 文件,而無需安裝 Microsoft Excel。 API 還支持合併和取消合併 Excel 工作表中的單元格。您可以通過 NuGet 安裝 API 或直接從 下載 部分下載。

PM> Install-Package Aspose.Cells.Cpp

使用 C++ 合併 Excel 工作表中的單元格

在這個例子中,我們將創建一個空的 Excel 工作表,並按照下面給出的步驟合併幾個單元格。

以下示例代碼顯示如何使用 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"));

// 創建樣式對象 
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();

// 創建字體對象
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")));
示例代碼生成的輸出 Excel 文件的圖像

示例代碼生成的輸出 Excel 文件的圖像

使用 C++ 取消合併 Excel 工作表中的單元格

以下是取消合併 Excel 工作表中的單元格的步驟。

以下示例代碼演示瞭如何使用 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")));
示例代碼生成的輸出 Excel 文件的圖像

示例代碼生成的輸出 Excel 文件的圖像

使用 C++ 合併 Excel 工作表中的一系列單元格

以下是合併 Excel 工作表中一系列單元格的步驟。

以下示例代碼顯示瞭如何使用 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")));
示例代碼生成的輸出 Excel 文件的圖像

示例代碼生成的輸出 Excel 文件的圖像

使用 C++ 取消合併 Excel 工作表中的一系列單元格

以下是取消合併 Excel 工作表中一系列單元格的步驟。

以下示例代碼顯示如何使用 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")));
示例代碼生成的輸出 Excel 文件的圖像

示例代碼生成的輸出 Excel 文件的圖像

使用 C++ 在 Excel 工作表中合併命名範圍的單元格

Aspose.Cells for C++ 還為您提供了合併命名範圍的單元格的能力。為此,請按照以下步驟操作。

以下示例代碼演示瞭如何使用 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")));
示例代碼生成的輸出 Excel 文件的圖像

示例代碼生成的輸出 Excel 文件的圖像

獲得免費許可證

您可以通過申請 免費的臨時許可證 來試用沒有評估限制的 API。

結論

在本文中,您學習瞭如何使用 C++ 合併和取消合併 Excel 工作表中的單元格。此外,您還了解瞭如何使用 Aspose.Cells for C++ API 合併和取消合併範圍以及命名範圍。 API 提供了許多用於處理 Excel 文件的附加功能,您可以通過訪問 官方文檔 來詳細了解這些功能。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。

也可以看看