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

也可以看看