Pendahuluan
Aspose.Cells FOSS untuk C++ adalah perpustakaan open-source untuk membuat, memuat, menyunting, dan menyimpan buku kerja Excel .xlsx dari kode C++ native, tanpa memerlukan Microsoft Excel atau otomatisasi COM apa pun. Ia terintegrasi ke dalam build berbasis CMake sebagai perpustakaan sumber — tidak ada ketergantungan runtime eksternal yang harus dipasang atau ditautkan selain pustaka standar C++.
Perpustakaan ini berlisensi MIT dan menargetkan C++17. Ia dibangun dengan add_subdirectory atau FetchContent dari kloning git, karena tidak didistribusikan melalui manajer paket seperti vcpkg atau Conan. Permukaan API diatur di sekitar Workbook yang memiliki WorksheetCollection, lembar kerja yang menampilkan objek Cells untuk akses tingkat sel, dan fasad Style untuk font, isian, dan batas. Jika Anda membangun layanan backend, generator laporan, atau pipeline ekspor data dalam C++ dan perlu menghasilkan atau membaca file .xlsx tanpa harus memanggil Excel, perpustakaan ini memberi Anda cara native untuk melakukannya.
Aspose.Cells FOSS juga tersedia untuk .NET, Go, Java, Python, Rust, dan TypeScript. Perpustakaan C++ mengikuti pendekatan yang sama seperti anggota keluarga lainnya: sebuah API yang berfokus pada XLSX yang didasarkan pada apa yang sebenarnya diimplementasikan, di bawah lisensi yang permisif.
Apa yang Disertakan
Struktur Buku Kerja dan Lembar Kerja
Sebuah Workbook dimulai dengan satu lembar kerja. Lembar tambahan dibuat dengan WorksheetCollection::Add, dan lembar yang ada dapat diakses melalui indeks atau nama melalui pengindeks koleksi. Setiap Worksheet menampilkan sel-selnya melalui 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");
Nilai Sel, Rumus, dan Format Angka
Cell::PutValue memiliki overload untuk string, integer, double, boolean, dan jenis nilai lainnya, sehingga tidak diperlukan konversi string manual. SetFormula menerima rumus dengan atau tanpa = di depan dan menormalkannya; GetType kemudian melaporkan CellValueType berupa Formula. Pemformatan angka diterapkan melalui Style::SetNumberFormat dan hanya memengaruhi teks tampilan yang dikembalikan oleh GetDisplayStringValue — nilai yang disimpan di bawahnya tidak berubah.
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"
Penggayaan dengan Font, Isi, dan Garis Batas
Cell::GetStyle() dan SetStyle() membaca dan menulis objek Style yang mengelompokkan Font, Borders, dan pengaturan isi. Warna dibangun dengan Color::FromArgb, dan pola isi diatur melalui 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);
Validasi Data dan Pemformatan Bersyarat
ValidationCollection::Add menentukan ruang lingkup aturan Validation ke CellArea; mengatur ValidationType menjadi List dengan nilai Formula1 menghasilkan dropdown dalam sel. ConditionalFormattingCollection::Add membuat grup pemformatan yang ruang lingkupnya ditentukan dengan AddArea dan diisi dengan AddCondition, yang mengambil FormatConditionType, OperatorType, serta satu atau dua rumus.
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);
Pengaturan Halaman dan Tata Letak Cetak
Worksheet::GetPageSetup() mengembalikan objek PageSetup yang mengontrol ukuran kertas, orientasi, skala, area cetak, dan baris/kolom judul cetak. Nilai divalidasi pada penugasan — misalnya, pemanggilan SetScale di luar jangkauan akan menghasilkan 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");
Panduan Cepat
Aspose.Cells FOSS untuk C++ tidak didistribusikan melalui manajer paket — kloning repositori dan tambahkan ke proyek CMake Anda:
git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git
Tambahkan perpustakaan sebagai subdirektori dari CMakeLists.txt Anda sendiri dan tautkan ke target aspose_cells_foss:
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp/Aspose.Cells.Foss.Cpp)
target_link_libraries(MyApp PRIVATE aspose_cells_foss)
Kemudian buat, beri gaya, dan simpan workbook:
#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;
}
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
XLSX adalah satu-satunya format yang dibaca dan ditulis oleh rilis saat ini. Konstruktor file dan stream Workbook memuat data .xlsx, dan Save menuliskannya kembali; enum LoadFormat dan SaveFormat mengatur pemilihan format eksplisit pada panggilan tersebut.
Sumber Terbuka & Lisensi
Aspose.Cells FOSS untuk C++ berlisensi MIT. Kode sumber lengkap tersedia di GitHub, dan lisensi tersebut mengizinkan penggunaan komersial, modifikasi, serta redistribusi.