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工作表名稱) 方法。
- 最後,使用 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 文件的功能,您可以通過訪問 官方文檔 來探索這些功能。如有任何疑問,請隨時通過我們的 免費支持論壇 與我們聯繫。