合并和取消合并单元格是 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 文件的附加功能,您可以通过访问 官方文档 详细了解这些功能。如有任何问题,请随时通过我们的 免费支持论坛 与我们联系。