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 类加载 Excel 文件。
- 使用 IWorkbook->GetIWorksheets() 方法检索工作表集合。
- 使用 IWorksheetCollection->AddCopy (intrusiveptrAspose::Cells::Systems::String sheetName) 方法。
- 最后,使用 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("Sample1.xlsx")));
// 检索工作表
intrusive_ptr<IWorksheetCollection> sheets = workbook->GetIWorksheets();
// 将数据从工作簿中的现有工作表复制到新工作表。
sheets->AddCopy(new String("Sheet1"));
// 保存 Excel 文件
workbook->Save(outDir->StringAppend(new String("Sample1_out.xlsx")));
将工作表从一个工作簿复制到另一个
Aspose.Cells for C++ 还允许您在两个 Excel 文件之间复制工作表。以下是将工作表从一个 Excel 文件复制到另一个文件的步骤。
- 首先,使用 IWorkbook 类加载源和目标 Excel 文件。
- 使用 IWorkbook->GetIWorksheets() 方法检索源工作簿的工作表集合。
- 使用 IWorksheetCollection->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索要复制的工作表。
- 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index)->Copy (intrusiveptr) 将工作表复制到目标工作簿Aspose::Cells::IWorksheetsourceSheet) 方法。
- 最后,使用 IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下是使用 C++ 将工作表从一个 Excel 工作簿复制到另一个的示例代码。
// 源目录路径。
StringPtr srcDir = new String("SourceDirectory\\");
// 输出目录路径。
StringPtr outDir = new String("OutputDirectory\\");
// 加载源 Excel 文件
intrusive_ptr<IWorkbook> sourceWorkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// 加载目标 Excel 文件
intrusive_ptr<IWorkbook> destinationWorkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("book1.xlsx")));
// 检索源工作簿的工作表
intrusive_ptr<IWorksheetCollection> sheets = sourceWorkbook->GetIWorksheets();
// 检索要复制的工作表
intrusive_ptr<IWorksheet> worksheet = sheets->GetObjectByIndex(0);
// 将之前检索到的工作表复制到新工作簿
destinationWorkbook->GetIWorksheets()->GetObjectByIndex(0)->Copy(worksheet);
// 保存 Excel 文件
destinationWorkbook->Save(outDir->StringAppend(new String("book1_out.xlsx")));
使用 C++ 将工作表移动到不同的位置
以下是在 Excel 工作簿中更改工作表位置的步骤。
- 使用 IWorkbook 类加载 Excel 文件。
- 使用 IWorkbook->GetIWorksheets() 方法检索工作表集合。
- 使用 IWorksheetCollection->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索要移动的工作表。
- 使用 IWorksheet->MoveTo (Aspose::Cells::Systems::Int32 index) 方法将工作表移动到所需位置。
- 最后,使用 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("Sample1.xlsx")));
// 检索工作表
intrusive_ptr<IWorksheetCollection> sheets = workbook->GetIWorksheets();
// 访问第一张工作表
intrusive_ptr<IWorksheet> sheet = sheets->GetObjectByIndex(0);
// 将第一张工作表移动到工作簿中的第二个位置。
sheet->MoveTo(1);
// 保存 Excel 文件
workbook->Save(outDir->StringAppend(new String("Sample1_out.xlsx")));
获得免费许可证
您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。
结论
在本文中,您学习了如何在同一个 Excel 工作簿内或不同工作簿之间复制工作表。此外,您还了解了如何在 Excel 文件中更改工作表的位置。 Aspose.Cells for C++ 提供了更多处理 Excel 文件的功能,您可以通过访问 官方文档 进行探索。如有任何问题,请随时通过我们的 免费支持论坛 与我们联系。