合併和取消合併單元格是 Microsoft Excel 的一項簡單且常用的功能。合併單元格在某些情況下可能會有所幫助,例如,當您的工作表包含多個共享相同標題的列時。您可以合併列上方的單元格以給它們一個共同的標題。如果不再需要合併的單元格,您可以同樣輕鬆地取消合併它們。您可能需要在 C++ 應用程序中執行這些任務。為此,本文將教您如何使用 C++ 以編程方式合併和取消合併 Excel 工作表中的單元格。
- 用於合併和取消合併單元格的 C++ API
- 使用 C++ 合併 Excel 工作表中的單元格
- 使用 C++ 取消合併 Excel 工作表中的單元格
- 使用 C++ 合併 Excel 工作表中的一系列單元格
- 使用 C++ 取消合併 Excel 工作表中的一系列單元格
- 使用 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 工作表,並按照下面給出的步驟合併幾個單元格。
- 首先,創建一個 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 (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下示例代碼顯示如何使用 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")));
使用 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 (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下示例代碼演示瞭如何使用 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(intrusiveptrAspose::Cells::Systems::String地址) 方法。
- 使用 IRange->Merge() 方法合併範圍。
- 最後,使用 IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下示例代碼顯示瞭如何使用 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(intrusiveptrAspose::Cells::Systems::String地址) 方法。
- 使用 IRange->UnMerge() 方法取消合併範圍。
- 最後,使用 IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下示例代碼顯示如何使用 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(intrusiveptrAspose::Cells::Systems::String地址) 方法。
- 使用 IRange->SetName(intrusiveptrAspose::Cells::Systems::String值) 方法。
- 創建樣式並將其應用於命名範圍。
- 使用 IRange->Merge() 方法合併命名區域的單元格。
- 最後,使用 IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下示例代碼演示瞭如何使用 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 工作表中的單元格。此外,您還了解瞭如何使用 Aspose.Cells for C++ API 合併和取消合併範圍以及命名範圍。 API 提供了許多用於處理 Excel 文件的附加功能,您可以通過訪問 官方文檔 來詳細了解這些功能。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。