Wprowadzenie

Aspose.Cells FOSS dla C++ jest otwartoźródłową biblioteką do tworzenia, ładowania, edytowania i zapisywania skoroszytów Excel .xlsx z natywnego kodu C++, bez wymogu posiadania Microsoft Excel ani żadnej automatyzacji COM. Integruje się z kompilacją opartą na CMake jako biblioteka źródłowa — nie ma zewnętrznych zależności uruchomieniowych do instalacji lub linkowania poza standardową biblioteką C++.

Biblioteka jest licencjonowana na licencji MIT i celuje w C++17. Buduje się z add_subdirectory lub FetchContent z klona git, ponieważ nie jest dystrybuowana przez menedżer pakietów, taki jak vcpkg czy Conan. Powierzchnia API jest zorganizowana wokół Workbook, który posiada WorksheetCollection, arkusze kalkulacyjne udostępniające obiekt Cells do dostępu na poziomie komórek oraz fasadę Style dla czcionek, wypełnień i obramowań. Jeśli tworzysz usługi backendowe, generatory raportów lub potoki eksportu danych w C++ i potrzebujesz tworzyć lub odczytywać pliki .xlsx bez wywoływania Excela, ta biblioteka zapewnia natywny sposób realizacji.

Aspose.Cells FOSS jest również dostępny dla .NET, Go, Java, Python, Rust i TypeScript. Biblioteka C++ podąża tym samym podejściem co reszta rodziny: API skoncentrowany na XLSX, oparty na tym, co jest faktycznie zaimplementowane, na licencji permissive.


Co zawiera

Struktura skoroszytu i arkusza kalkulacyjnego

Workbook zaczyna się od jednego arkusza. Dodatkowe arkusze są tworzone przy pomocy WorksheetCollection::Add, a istniejące arkusze są dostępne za pomocą indeksu lub nazwy poprzez indeksator kolekcji. Każdy Worksheet udostępnia swoje komórki poprzez GetCells().

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"

using namespace Aspose::Cells_FOSS;

Workbook workbook;
workbook.GetWorksheets()[0].SetName("Data");
workbook.GetWorksheets().Add("Summary");

Worksheet& data = workbook.GetWorksheets()["Data"];
data.GetCells()["A1"].PutValue("Product");
data.GetCells()["B1"].PutValue("Price");

Wartości komórek, formuły i formaty liczb

Cell::PutValue ma przeciążenia dla ciągów znaków, liczb całkowitych, podwójnych, wartości logicznych oraz innych rodzajów wartości, więc nie jest wymagana ręczna konwersja ciągów. SetFormula akceptuje formułę z lub bez wiodącego = i normalizuje ją; GetType następnie zgłasza CellValueType Formula. Formatowanie liczb jest stosowane przez Style::SetNumberFormat i wpływa tylko na tekst wyświetlany zwracany przez GetDisplayStringValue — podstawowa przechowywana wartość pozostaje niezmieniona.

auto& sheet = workbook.GetWorksheets()[0];
auto cell = sheet.GetCells()["B2"];
cell.PutValue(1234.567);

auto style = cell.GetStyle();
style.SetNumberFormat("#,##0.00");
cell.SetStyle(style);

sheet.GetCells()["B3"].SetFormula("B2*2");
// GetFormula() now returns "=B2*2"; GetType() reports CellValueType::Formula

std::cout << cell.GetDisplayStringValue() << std::endl; // "1,234.57"

Stylowanie czcionkami, wypełnieniami i obramowaniami

Cell::GetStyle() i SetStyle() odczytują i zapisują obiekt Style, który grupuje Font, Borders oraz ustawienia wypełnienia. Kolory są konstruowane przy użyciu Color::FromArgb, a wzory wypełnienia są ustawiane przez FillPattern.

Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);

Walidacja danych i formatowanie warunkowe

ValidationCollection::Add określa zakres reguły Validation do CellArea; ustawienie jej ValidationType na List z wartością Formula1 powoduje rozwijane menu w komórce. ConditionalFormattingCollection::Add tworzy grupę formatowania, która jest zakresowana przy użyciu AddArea i wypełniona AddCondition, które przyjmuje FormatConditionType, OperatorType oraz jedną lub dwie formuły.

int validationIndex = sheet.GetValidations().Add(CellArea::CreateCellArea("B1", "B3"));
auto validation = sheet.GetValidations()[validationIndex];
validation.SetType(ValidationType::List);
validation.SetFormula1("\"Open,Closed\"");
validation.SetShowError(true);

int cfIndex = sheet.GetConditionalFormattings().Add();
auto formatting = sheet.GetConditionalFormattings()[cfIndex];
formatting.AddArea(CellArea::CreateCellArea("C1", "C3"));
int conditionIndex = formatting.AddCondition(
    FormatConditionType::CellValue, OperatorType::Between, "1", "9");

auto condition = formatting[conditionIndex];
auto conditionStyle = condition.GetStyle();
conditionStyle.SetPattern(FillPattern::Solid);
conditionStyle.SetForegroundColor(Color::FromArgb(255, 255, 199, 206));
condition.SetStyle(conditionStyle);

Ustawienia strony i układ wydruku

Worksheet::GetPageSetup() zwraca obiekt PageSetup, który kontroluje rozmiar papieru, orientację, skalowanie, obszar wydruku oraz wiersze/kolumny tytułów wydruku. Wartości są weryfikowane przy przypisaniu — na przykład wywołanie SetScale poza zakresem powoduje podniesienie CellsException.

auto& pageSetup = sheet.GetPageSetup();
pageSetup.SetOrientation(PageOrientationType::Landscape);
pageSetup.SetPaperSize(PaperSizeType::PaperA4);
pageSetup.SetFitToPagesWide(1);
pageSetup.SetFitToPagesTall(3);
pageSetup.SetPrintArea("$A$1:$D$20");
pageSetup.SetPrintTitleRows("$1:$2");

Szybki start

Aspose.Cells FOSS dla C++ nie jest dystrybuowane przez menedżer pakietów — sklonuj repozytorium i dodaj je do swojego projektu CMake:

git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git

Dodaj bibliotekę jako podkatalog własnego CMakeLists.txt i połącz się z celem aspose_cells_foss:

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp/Aspose.Cells.Foss.Cpp)
target_link_libraries(MyApp PRIVATE aspose_cells_foss)

Następnie utwórz, sformatuj i zapisz skoroszyt:

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
#include "aspose/cells_foss/Style.h"
#include "aspose/cells_foss/Font.h"
#include "aspose/cells_foss/Color.h"

using namespace Aspose::Cells_FOSS;

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    sheet.SetName("Products");

    sheet.GetCells()["A1"].PutValue("Product");
    sheet.GetCells()["B1"].PutValue("Price");
    sheet.GetCells()["A2"].PutValue("Apple");
    sheet.GetCells()["B2"].PutValue(2.99);
    sheet.GetCells()["A3"].PutValue("Orange");
    sheet.GetCells()["B3"].PutValue(1.99);
    sheet.GetCells()["B4"].SetFormula("SUM(B2:B3)");

    Style header = sheet.GetCells()["A1"].GetStyle();
    Font font;
    font.SetBold(true);
    header.SetFont(font);
    sheet.GetCells()["A1"].SetStyle(header);

    workbook.Save("products.xlsx");
    return 0;
}

Obsługiwane formaty

FormatRozszerzenieOdczytZapisz
XLSX.xlsx✓✓

XLSX jest jedynym formatem, który bieżąca wersja odczytuje i zapisuje. Konstruktorzy plików i strumieni Workbook ładują dane .xlsx, a Save zapisuje je ponownie; wyliczenia LoadFormat i SaveFormat sterują explicite wyborem formatu w tych wywołaniach.


Open Source i licencjonowanie

Aspose.Cells FOSS dla C++ jest licencjonowane na licencji MIT. Pełne źródło jest dostępne na GitHub, a licencja zezwala na komercyjne użycie, modyfikację i redystrybucję.


Rozpoczęcie

Powiązane zasoby