Sammanfoga och ta bort celler är en enkel och vanlig funktion i Microsoft Excel. Sammanfogning av celler kan visa sig vara till hjälp i scenarier, till exempel när du har ett kalkylblad med flera kolumner som delar samma rubrik. Du kan slå samman cellerna ovanför kolumnerna för att ge dem en gemensam rubrik. Om sammanslagna celler inte längre behövs kan du ta bort sammanslagningen av dem lika enkelt. Du kan behöva utföra dessa uppgifter i dina C++-program. För det kommer den här artikeln att lära dig hur du sammanfogar och tar bort celler i Excel-kalkylblad programmatiskt med C++.

C++ API för sammanfogning och upphävande av celler

Aspose.Cells for C++ är ett inbyggt C++-bibliotek som låter dig skapa, läsa och ändra Excel-filer utan att Microsoft Excel behöver installeras. API:et stöder också sammanfogning och upphävande av celler i ett 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

Slå samman celler i ett Excel-kalkylblad med C++

I det här exemplet kommer vi att skapa ett tomt Excel-kalkylblad och slå samman några celler genom att följa stegen nedan.

Följande exempelkod visar hur man slår samman celler i ett Excel-kalkylblad med C++.

// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");

// Ladda indata Excel-filen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Öppna det första kalkylbladet i Excel-filen
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Skapa ett Cells-objekt för att hämta alla celler.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Sammanfoga celler
cells->Merge(5, 2, 2, 3);

// Lägg in data i cellen
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));

// Skapa ett stilobjekt 
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();

// Skapa ett teckensnittsobjekt
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();

// Ställ in namnet
font->SetName(new String("Times New Roman"));

// Ställ in teckenstorleken
font->SetSize(18);

// Ställ in teckensnittsfärgen
font->SetColor(Systems::Drawing::Color::GetCyan());

// Gör texten fet
font->SetBold(true);

// Gör texten kursiv
font->SetItalic(true);

// Ställ in förgrundsfärgen
style->SetForegroundColor(Systems::Drawing::Color::GetRed());

// Ställ in mönstret
style->SetPattern(BackgroundType_Solid);

// Applicera stilen
cells->GetICell(5, 2)->SetIStyle(style);

// Spara Excel-filen
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
Bild av den utgående Excel-filen som genereras av exempelkoden

Bild av den utgående Excel-filen som genereras av exempelkoden

Ta bort sammanslagningen av celler i ett Excel-kalkylblad med C++

Följande är stegen för att ta bort sammanslagningen av celler i ett Excel-kalkylblad.

Följande exempelkod visar hur man tar bort celler i ett Excel-kalkylblad med C++.

// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");

// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");

// Ladda indata Excel-filen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));

// Öppna det första kalkylbladet i Excel-filen
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Skapa ett Cells-objekt för att hämta alla celler.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Ta bort sammanslagningen av celler.
cells->UnMerge(5, 2, 2, 3);

// Spara Excel-filen
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
Bild av den utgående Excel-filen som genereras av exempelkoden

Bild av den utgående Excel-filen som genereras av exempelkoden

Slå samman ett cellområde i ett Excel-kalkylblad med C++

Följande är stegen för att slå samman ett cellintervall i ett Excel-kalkylblad.

Följande exempelkod visar hur man slår samman ett cellintervall i ett Excel-kalkylblad med C++.

// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");

// Ladda indata Excel-filen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Öppna det första kalkylbladet i Excel-filen
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Mata in data i A1-cell.
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Skapa ett intervall
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Slå samman intervall till en enda cell
range->Merge();

// Spara Excel-filen
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
Bild av den utgående Excel-filen som genereras av exempelkoden

Bild av den utgående Excel-filen som genereras av exempelkoden

Ta bort ett cellområde i ett Excel-kalkylblad med C++

Följande är stegen för att ta bort ett cellintervall i ett Excel-kalkylblad.

Följande exempelkod visar hur man tar bort ett cellintervall i ett Excel-kalkylblad med C++.

// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");

// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");

// Ladda indata Excel-filen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Öppna det första kalkylbladet i Excel-filen
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Skapa ett intervall
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Avsluta intervall
range->UnMerge();

// Spara Excel-filen
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
Bild av den utgående Excel-filen som genereras av exempelkoden

Bild av den utgående Excel-filen som genereras av exempelkoden

Slå samman celler i ett namngivet område i ett Excel-kalkylblad med C++

Aspose.Cells för C++ ger dig också möjligheten att slå samman cellerna i ett namngivet område. För att uppnå detta, följ stegen nedan.

Följande exempelkod visar hur man slår samman cellerna i ett namngivet område med C++.

// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");

// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");

// Ladda indata Excel-filen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Öppna det första kalkylbladet i Excel-filen
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Skapa ett intervall
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Ange intervallnamn
range->SetName(new String("Named_Range"));

// Definiera stilobjekt
intrusive_ptr<IStyle> style = workbook->CreateIStyle();

// Ställ in horisontell justering
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);

// Skapa ett StyleFlag-objekt
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();

// Ställ in horisontell justering to true
styleFlag->SetHorizontalAlignment(true);

// Applicera stilen på sortimentet
range->ApplyIStyle(style, styleFlag);

// Lägg data i intervallet
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Sammanfoga intervall
range->Merge();

// Spara Excel-filen
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
Bild av den utgående Excel-filen som genereras av exempelkoden

Bild av den utgående Excel-filen som genereras av exempelkoden

Skaffa en gratis licens

Du kan prova API:et 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 sammanfogar och tar bort celler i ett Excel-kalkylblad med C++. Dessutom har du sett hur man slår samman och tar bort intervall och namngivna intervall med Aspose.Cells för C++ API. API:et tillhandahåller många ytterligare funktioner för att arbeta med Excel-filer som du kan utforska i detalj 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.

Se även