Sloučení a zrušení sloučení buněk je jednoduchá a běžně používaná funkce aplikace Microsoft Excel. Sloučení buněk se může ukázat jako užitečné ve scénářích, například když máte list s více sloupci, které sdílejí stejný nadpis. Buňky nad sloupci můžete sloučit a dát jim společný nadpis. V případě, že sloučené buňky již nejsou potřeba, můžete je stejně snadno zrušit. Možná budete muset provést tyto úlohy ve svých aplikacích C++. Za tímto účelem vás tento článek naučí, jak sloučit a zrušit sloučení buněk v listech aplikace Excel programově pomocí C++.

C++ API pro slučování a rozpojování buněk

Aspose.Cells for C++ je nativní knihovna C++, která umožňuje vytvářet, číst a upravovat soubory aplikace Excel bez nutnosti instalace aplikace Microsoft Excel. Rozhraní API také podporuje sloučení a zrušení sloučení buněk v listu aplikace Excel. Rozhraní API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce Downloads.

PM> Install-Package Aspose.Cells.Cpp

Sloučit buňky v excelovém listu pomocí C++

V tomto příkladu vytvoříme prázdný list aplikace Excel a sloučíme několik buněk podle níže uvedených kroků.

Následující ukázkový kód ukazuje, jak sloučit buňky v listu aplikace Excel pomocí C++.

// Cesta k výstupnímu adresáři.
StringPtr outDir = new String("OutputDirectory\\");

// Načtěte vstupní soubor Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Otevřete první list v souboru aplikace Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Vytvořte objekt Cells pro načtení všech buněk.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Spojit buňky
cells->Merge(5, 2, 2, 3);

// Vložte data do buňky
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));

// Vytvořte objekt Styl 
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();

// Vytvořte objekt Font
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();

// Nastavte název
font->SetName(new String("Times New Roman"));

// Nastavte velikost písma
font->SetSize(18);

// Nastavte barvu písma
font->SetColor(Systems::Drawing::Color::GetCyan());

// Udělejte text tučným písmem
font->SetBold(true);

// Udělejte text kurzívou
font->SetItalic(true);

// Nastavte barvu popředí
style->SetForegroundColor(Systems::Drawing::Color::GetRed());

// Nastavte Vzor
style->SetPattern(BackgroundType_Solid);

// Použijte styl
cells->GetICell(5, 2)->SetIStyle(style);

// Uložte soubor Excel
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Zrušte sloučení buněk v listu aplikace Excel pomocí C++

Následují kroky pro zrušení sloučení buněk v listu aplikace Excel.

Následující ukázkový kód ukazuje, jak zrušit sloučení buněk v listu aplikace Excel pomocí C++.

// Cesta ke zdrojovému adresáři.
StringPtr srcDir = new String("SourceDirectory\\");

// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");

// Načtěte vstupní soubor Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));

// Otevřete první list v souboru aplikace Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Vytvořte objekt Cells pro načtení všech buněk.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Zrušte sloučení buněk.
cells->UnMerge(5, 2, 2, 3);

// Uložte soubor aplikace Excel
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Sloučit rozsah buněk v excelovém listu pomocí C++

Následují kroky ke sloučení oblasti buněk v listu aplikace Excel.

Následující ukázkový kód ukazuje, jak sloučit oblast buněk v listu aplikace Excel pomocí C++.

// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");

// Načtěte vstupní soubor Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Otevřete první list v souboru aplikace Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Zadejte data do buňky A1.
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Vytvořte rozsah
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Sloučit rozsah do jedné buňky
range->Merge();

// Uložte soubor aplikace Excel
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Zrušte sloučení rozsahu buněk v listu aplikace Excel pomocí C++

Následují kroky pro zrušení sloučení oblasti buněk v listu aplikace Excel.

Následující ukázkový kód ukazuje, jak zrušit sloučení oblasti buněk v listu aplikace Excel pomocí C++.

// Cesta ke zdrojovému adresáři.
StringPtr srcDir = new String("SourceDirectory\\");

// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");

// Načtěte vstupní soubor Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Otevřete první list v souboru aplikace Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Vytvořte rozsah
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Zrušit sloučení rozsahu
range->UnMerge();

// Uložte soubor aplikace Excel
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Sloučit buňky pojmenovaného rozsahu v listu aplikace Excel pomocí C++

Aspose.Cells for C++ vám také poskytuje možnost sloučit buňky pojmenovaného rozsahu. Chcete-li toho dosáhnout, postupujte podle kroků uvedených níže.

Následující ukázkový kód ukazuje, jak sloučit buňky pojmenované oblasti pomocí C++.

// Cesta ke zdrojovému adresáři.
StringPtr srcDir = new String("SourceDirectory\\");

// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");

// Načtěte vstupní soubor Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Otevřete první list v souboru aplikace Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Vytvořte rozsah
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Nastavit název rozsahu
range->SetName(new String("Named_Range"));

// Definujte objekt stylu
intrusive_ptr<IStyle> style = workbook->CreateIStyle();

// Nastavte vodorovné zarovnání
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);

// Vytvořte objekt StyleFlag
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();

// Nastavte vodorovné zarovnání to true
styleFlag->SetHorizontalAlignment(true);

// Použijte styl na rozsah
range->ApplyIStyle(style, styleFlag);

// Vložte data do rozsahu
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Sloučit rozsah
range->Merge();

// Uložte soubor aplikace Excel
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Obrázek výstupního souboru Excel generovaný ukázkovým kódem

Získejte bezplatnou licenci

Rozhraní API můžete vyzkoušet bez omezení hodnocení tím, že požádáte o bezplatnou dočasnou licenci.

Závěr

V tomto článku jste se naučili, jak sloučit a zrušit sloučení buněk v listu aplikace Excel pomocí C++. Dále jste viděli, jak sloučit a zrušit sloučení rozsahů a pojmenovaných rozsahů pomocí Aspose.Cells for C++ API. Rozhraní API poskytuje mnoho dalších funkcí pro práci se soubory aplikace Excel, které můžete podrobně prozkoumat na oficiální dokumentaci. V případě jakýchkoli dotazů nás neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také