Scalanie i rozłączanie komórek to prosta i często używana funkcja programu Microsoft Excel. Scalanie komórek może okazać się przydatne w scenariuszach, na przykład gdy masz arkusz z wieloma kolumnami, które mają ten sam nagłówek. Możesz scalić komórki nad kolumnami, aby nadać im wspólny nagłówek. Jeśli scalone komórki nie są już potrzebne, możesz je równie łatwo rozłączyć. Może być konieczne wykonanie tych zadań w aplikacjach C++. W tym celu w tym artykule dowiesz się, jak programowo scalać i rozdzielać komórki w arkuszach programu Excel przy użyciu języka C++.

C++ API do scalania i rozłączania komórek

Aspose.Cells for C++ to natywna biblioteka C++, która umożliwia tworzenie, odczytywanie i modyfikowanie plików programu Excel bez konieczności instalowania programu Microsoft Excel. Interfejs API obsługuje również scalanie i rozłączanie komórek w arkuszu programu Excel. Możesz zainstalować API poprzez NuGet lub pobrać bezpośrednio z sekcji Downloads.

PM> Install-Package Aspose.Cells.Cpp

Scalanie komórek w arkuszu programu Excel przy użyciu języka C++

W tym przykładzie utworzymy pusty arkusz programu Excel i połączymy kilka komórek, wykonując czynności podane poniżej.

Poniższy przykładowy kod pokazuje, jak scalać komórki w arkuszu programu Excel przy użyciu języka C++.

// Ścieżka katalogu wyjściowego.
StringPtr outDir = new String("OutputDirectory\\");

// Załaduj wejściowy plik Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Uzyskaj dostęp do pierwszego arkusza w pliku Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Utwórz obiekt Cells, aby pobrać wszystkie komórki.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Połącz komórki
cells->Merge(5, 2, 2, 3);

// Umieść dane w komórce
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));

// Utwórz obiekt stylu 
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();

// Utwórz obiekt czcionki
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();

// Ustaw nazwę
font->SetName(new String("Times New Roman"));

// Ustaw rozmiar czcionki
font->SetSize(18);

// Ustaw kolor czcionki
font->SetColor(Systems::Drawing::Color::GetCyan());

// Pogrubiaj tekst
font->SetBold(true);

// Ustaw kursywę w tekście
font->SetItalic(true);

// Ustaw kolor pierwszego planu
style->SetForegroundColor(Systems::Drawing::Color::GetRed());

// Ustaw wzór
style->SetPattern(BackgroundType_Solid);

// Zastosuj styl
cells->GetICell(5, 2)->SetIStyle(style);

// Zapisz plik Excela
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Rozdziel komórki w arkuszu programu Excel przy użyciu języka C++

Poniżej przedstawiono kroki, aby rozłączyć komórki w arkuszu programu Excel.

Poniższy przykładowy kod ilustruje sposób rozłączenia komórek w arkuszu programu Excel przy użyciu języka C++.

// Ścieżka katalogu źródłowego.
StringPtr srcDir = new String("SourceDirectory\\");

// Ścieżka katalogu wyjściowego.
StringPtr outDir = new String("OutputDirectory\\");

// Załaduj wejściowy plik Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));

// Uzyskaj dostęp do pierwszego arkusza w pliku Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Utwórz obiekt Cells, aby pobrać wszystkie komórki.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Rozdziel komórki.
cells->UnMerge(5, 2, 2, 3);

// Zapisz plik Excela
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Scal zakres komórek w arkuszu programu Excel przy użyciu języka C++

Poniżej przedstawiono kroki scalania zakresu komórek w arkuszu programu Excel.

Poniższy przykładowy kod pokazuje, jak scalić zakres komórek w arkuszu programu Excel przy użyciu języka C++.

// Ścieżka katalogu wyjściowego.
StringPtr outDir = new String("OutputDirectory\\");

// Załaduj wejściowy plik Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Uzyskaj dostęp do pierwszego arkusza w pliku Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Wprowadź dane do komórki A1.
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Utwórz zakres
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Scal zakres w jedną komórkę
range->Merge();

// Zapisz plik Excela
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Rozdziel zakres komórek w arkuszu programu Excel przy użyciu języka C++

Poniżej przedstawiono kroki, aby rozłączyć zakres komórek w arkuszu programu Excel.

Poniższy przykładowy kod pokazuje, jak rozdzielić zakres komórek w arkuszu programu Excel przy użyciu języka C++.

// Ścieżka katalogu źródłowego.
StringPtr srcDir = new String("SourceDirectory\\");

// Ścieżka katalogu wyjściowego.
StringPtr outDir = new String("OutputDirectory\\");

// Załaduj wejściowy plik Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Uzyskaj dostęp do pierwszego arkusza w pliku Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Utwórz zakres
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Usuń zakres scalania
range->UnMerge();

// Zapisz plik Excela
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Scal komórki nazwanego zakresu w arkuszu programu Excel przy użyciu języka C++

Aspose.Cells for C++ zapewnia również możliwość scalania komórek nazwanego zakresu. Aby to osiągnąć, wykonaj czynności podane poniżej.

Poniższy przykładowy kod ilustruje sposób scalania komórek nazwanego zakresu przy użyciu języka C++.

// Ścieżka katalogu źródłowego.
StringPtr srcDir = new String("SourceDirectory\\");

// Ścieżka katalogu wyjściowego.
StringPtr outDir = new String("OutputDirectory\\");

// Załaduj wejściowy plik Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Uzyskaj dostęp do pierwszego arkusza w pliku Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Utwórz zakres
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Ustaw nazwę zakresu
range->SetName(new String("Named_Range"));

// Zdefiniuj obiekt stylu
intrusive_ptr<IStyle> style = workbook->CreateIStyle();

// Ustaw wyrównanie w poziomie
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);

// Utwórz obiekt StyleFlag
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();

// Ustaw wyrównanie w poziomie to true
styleFlag->SetHorizontalAlignment(true);

// Zastosuj styl do zakresu
range->ApplyIStyle(style, styleFlag);

// Umieść dane w zakresie
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Scal zakres
range->Merge();

// Zapisz plik Excela
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Obraz wyjściowego pliku programu Excel wygenerowanego przez przykładowy kod

Uzyskaj bezpłatną licencję

Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się scalać i rozdzielać komórki w arkuszu programu Excel przy użyciu języka C++. Co więcej, widziałeś, jak scalać i rozdzielać zakresy oraz nazwane zakresy za pomocą Aspose.Cells for C++ API. Interfejs API zapewnia wiele dodatkowych funkcji do pracy z plikami programu Excel, które można szczegółowo poznać, odwiedzając oficjalną dokumentację. W przypadku jakichkolwiek pytań prosimy o kontakt na naszym bezpłatnym forum pomocy technicznej.

Zobacz też