Excel-filer används för att hantera komplexa data som avdelningsbudgetar eller årliga försäljningsrapporter. Det kan finnas situationer där du har en färdig mall som du vill använda för att skapa en rapport. För detta kan du skapa en kopia av mallens arbetsblad. Du kan också behöva organisera arbetsbladen för att visa dataflödet. I sådana fall kan du ordna om arbetsbladen enligt dina krav. I ljuset av detta kommer du att lära dig hur du kopierar och flyttar kalkylblad programmatiskt med C++.
- C++ API för att kopiera eller flytta Excel-kalkylblad
- Kopiera kalkylblad i en Excel-arbetsbok med C++
- Kopiera arbetsblad från en arbetsbok till en annan
- Flytta kalkylbladet till en annan position med C++
- Skaffa en gratis licens
C++ API för att kopiera eller flytta Excel-kalkylblad
Aspose.Cells for C++ är ett inbyggt C++-bibliotek som låter dig skapa, läsa och uppdatera Excel-filer utan att Microsoft Excel behöver installeras. API:et stöder även kopiering och flyttning av Excel-kalkylblad. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet Nedladdningar.
PM> Install-Package Aspose.Cells.Cpp
Kopiera kalkylblad i en Excel-arbetsbok med C++
Följande är stegen för att kopiera kalkylblad i en Excel-arbetsbok.
- Ladda Excel-filen med klassen IWorkbook.
- Hämta kalkylbladssamlingen med metoden IWorkbook->GetIWorksheets().
- Lägg till kopian av det kalkylblad som krävs med IWorksheetCollection->AddCopy (intrusiveptrAspose::Cells::Systems::String sheetName) metod.
- Slutligen, spara Excel-filen med IWorkbook->Spara (intrusiveptrAspose::Cells::Systems::String filnamn) metod.
Följande är exempelkoden för att kopiera ett kalkylblad i en Excel-arbetsbok med C++.
// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");
// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");
// Ladda Excel-filen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// Hämta arbetsblad
intrusive_ptr<IWorksheetCollection> sheets = workbook->GetIWorksheets();
// Kopiera data till ett nytt ark från ett befintligt ark i arbetsboken.
sheets->AddCopy(new String("Sheet1"));
// Spara Excel-filen
workbook->Save(outDir->StringAppend(new String("Sample1_out.xlsx")));
Kopiera arbetsblad från en arbetsbok till en annan
Aspose.Cells för C++ låter dig också kopiera kalkylblad mellan två Excel-filer. Följande är stegen för att kopiera ett kalkylblad från en Excel-fil till en annan.
- Ladda först käll- och destinations Excel-filerna med klassen IWorkbook.
- Hämta källarbetsbokens kalkylbladssamling med metoden IWorkbook->GetIWorksheets().
- Hämta kalkylbladet du vill kopiera med metoden IWorksheetCollection->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Kopiera kalkylbladet till målarbetsboken med hjälp av IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index)->Copy (intrusiveptrAspose::Cells::IWorksheet sourceSheet) metod.
- Slutligen sparar du målfilen i Excel med IWorkbook->Spara (intrusiveptrAspose::Cells::Systems::String filnamn) metod.
Följande är exempelkoden för att kopiera ett kalkylblad från en Excel-arbetsbok till en annan med C++.
// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");
// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");
// Ladda källfilen för Excel
intrusive_ptr<IWorkbook> sourceWorkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// Ladda mål Excel-filen
intrusive_ptr<IWorkbook> destinationWorkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("book1.xlsx")));
// Hämta källarbetsbokens kalkylblad
intrusive_ptr<IWorksheetCollection> sheets = sourceWorkbook->GetIWorksheets();
// Hämta kalkylbladet som du vill kopiera
intrusive_ptr<IWorksheet> worksheet = sheets->GetObjectByIndex(0);
// Kopiera det tidigare hämtade kalkylbladet till den nya arbetsboken
destinationWorkbook->GetIWorksheets()->GetObjectByIndex(0)->Copy(worksheet);
// Spara Excel-filen
destinationWorkbook->Save(outDir->StringAppend(new String("book1_out.xlsx")));
Flytta kalkylbladet till en annan position med C++
Följande är stegen för att ändra placeringen av kalkylbladet i en Excel-arbetsbok.
- Ladda Excel-filen med klassen IWorkbook.
- Hämta kalkylbladssamlingen med metoden IWorkbook->GetIWorksheets().
- Hämta kalkylbladet du vill flytta med metoden IWorksheetCollection->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Flytta kalkylbladet till önskad plats med metoden IWorksheet->MoveTo (Aspose::Cells::Systems::Int32 index).
- Slutligen, spara Excel-filen med IWorkbook->Spara (intrusiveptrAspose::Cells::Systems::String filnamn) metod.
Följande är exempelkoden för att flytta kalkylbladet till en annan position i samma arbetsbok med C++.
// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");
// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");
// Ladda Excel-filen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// Hämta arbetsblad
intrusive_ptr<IWorksheetCollection> sheets = workbook->GetIWorksheets();
// Få tillgång till det första arket
intrusive_ptr<IWorksheet> sheet = sheets->GetObjectByIndex(0);
// Flytta det första arket till den andra positionen i arbetsboken.
sheet->MoveTo(1);
// Spara Excel-filen
workbook->Save(outDir->StringAppend(new String("Sample1_out.xlsx")));
Skaffa en gratis licens
Du kan prova API utan utvärderingsbegränsningar genom att begära en gratis tillfällig licens.
Slutsats
I den här artikeln har du lärt dig hur du kopierar kalkylblad inom samma Excel-arbetsbok eller mellan olika arbetsböcker. Dessutom har du sett hur du ändrar placeringen av kalkylbladet i en Excel-fil. Aspose.Cells för C++ tillhandahåller många fler funktioner för att arbeta med Excel-filer som du kan utforska genom att besöka den officiella dokumentationen. Om du har några frågor är du välkommen att kontakta oss på vårt gratis supportforum.