Pendahuluan

Manajemen spreadsheet adalah bagian dari Aspose.Cells FOSS untuk C++ yang paling pertama disentuh oleh program: Workbook yang memiliki file, objek Worksheet di dalamnya, dan koleksi Cells yang menyimpan nilai, rumus, dan format. Posting ini membahas permukaan tersebut dengan kedalaman lebih dibandingkan pengantar umum — bagaimana workbook dan worksheet dibuat dan dinavigasi, bagaimana nilai sel dan rumus dibaca dan ditulis, bagaimana Style, Font, Color, dan Borders digabungkan untuk memformat output, dan bagaimana PageSetup, Hyperlink, DefinedName, dan Validation menambahkan struktur di sekitar grid sel mentah.

Setiap kelas yang dibahas di sini merupakan bagian dari API native C++ yang dideklarasikan di bawah header aspose/cells_foss/. Tidak ada interoperabilitas COM dan tidak ada ketergantungan pada instalasi Microsoft Excel — pustaka ini membaca dan menulis format paket .xlsx secara langsung, yang juga menjadi alasan mengapa rilis saat ini hanya mendukung .xlsx, baik pada sisi memuat maupun menyimpan.

Contoh-contoh di bawah ini dibangun secara berurutan: sebuah workbook dibuat, worksheet dan sel diisi, gaya diterapkan, dan file disimpan serta dimuat kembali untuk mengonfirmasi perjalanan bolak-balik. Semua kode diadaptasi dari rangkaian pengujian kompatibilitas, golden, dan unit test milik pustaka itu sendiri, sehingga mencerminkan operasi yang diuji pada output .xlsx yang sebenarnya.


Fitur Utama

Manajemen Workbook dan Worksheet

Sebuah Workbook dimulai dengan satu worksheet di dalam WorksheetCollection-nya. Worksheet ditambahkan dengan Add(), dicari berdasarkan indeks atau nama, dan diganti namanya dengan SetName(). WorksheetCollection juga melacak sheet mana yang aktif:

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

using namespace Aspose::Cells_FOSS;

Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.SetName("Data");

int summaryIndex = workbook.GetWorksheets().Add("Summary");
workbook.GetWorksheets().SetActiveSheetIndex(0);

int sheetCount = workbook.GetWorksheets().GetCount(); // 2

Menyimpan dan memuat ulang melewati tipe Workbook yang sama. Workbook::Save() menerima jalur file, dan Workbook dapat dibangun langsung dari jalur atau dari buffer byte dalam memori, yang melakukan round-trip nilai sel dan rumus:

workbook.Save("report.xlsx");

Workbook loaded("report.xlsx");
Worksheet& reloadedSheet = loaded.GetWorksheets()["Data"];

Nilai Sel dan Rumus

Cells, yang diakses melalui Worksheet::GetCells(), mengindeks sel dengan referensi gaya A1. Cell::PutValue() menerima string, integer, double, dan boolean, SetFormula() menyimpan string rumus Excel, dan GetValue() mengembalikan CellValue dengan accessor bertipe (AsString(), AsInteger(), AsDouble(), AsBool(), AsDateTime()):

Cells& cells = sheet.GetCells();
cells["A1"].PutValue("Category");
cells["B1"].PutValue("Amount");
cells["A2"].PutValue("Travel");
cells["B2"].PutValue(482.50);
cells["A3"].PutValue("Supplies");
cells["B3"].PutValue(129.99);
cells["B4"].SetFormula("=SUM(B2:B3)");

CellValue amount = cells["B2"].GetValue();
if (amount.IsDouble()) {
    double value = amount.AsDouble();
}

std::string formula = cells["B4"].GetFormula();

Cell::GetType() melaporkan CellValueType yang disimpan (Blank, String, Number, Boolean, DateTime, atau Formula), dan GetDisplayStringValue() mengembalikan nilai yang diformat sebagaimana tampilannya di Excel, menghormati format angka apa pun yang diterapkan melalui Style.

Penggayaan dengan Style, Font, Color, dan Borders

Cell::GetStyle() mengembalikan objek Style yang dapat dimodifikasi dan diterapkan kembali dengan SetStyle(). Style menampilkan Font, satu set Borders, pola isi dan warna, perataan, serta format angka:

#include "aspose/cells_foss/Style.h"
#include "aspose/cells_foss/Color.h"

Cell headerCell = sheet.GetCells()["A1"];
Style style = headerCell.GetStyle();

Font font = style.GetFont();
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
style.SetFont(font);

style.SetPattern(FillPattern::Solid);
style.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
style.SetHorizontalAlignment(HorizontalAlignmentType::Center);

Borders borders = style.GetBorders();
Border bottomBorder = borders.GetBottom();
bottomBorder.SetLineStyle(BorderStyleType::Thin);
borders.SetBottom(bottomBorder);
style.SetBorders(borders);

style.SetNumberFormat("#,##0.00");
headerCell.SetStyle(style);

Style adalah tipe nilai: membacanya kembali dengan GetStyle() mencerminkan apa pun yang terakhir diatur dengan SetStyle(), yang membuatnya mudah untuk membuat satu style dan menerapkannya di seluruh baris header atau rentang sel data.

Pengaturan Halaman dan Konfigurasi Cetak

Worksheet::GetPageSetup() mengembalikan objek PageSetup yang mencakup ukuran kertas, orientasi, margin, skala, judul cetak, dan pemisah halaman:

#include "aspose/cells_foss/PageSetup.h"

PageSetup& pageSetup = sheet.GetPageSetup();
pageSetup.SetOrientation(PageOrientationType::Landscape);
pageSetup.SetPaperSize(PaperSizeType::PaperA4);
pageSetup.SetFitToPagesWide(1);
pageSetup.SetFitToPagesTall(0);
pageSetup.SetPrintArea("$A$1:$D$20");
pageSetup.SetPrintTitleRows("$1:$1");
pageSetup.SetLeftMargin(0.5);
pageSetup.SetCenterFooter("Page &P of &N");
pageSetup.AddHorizontalPageBreak(20);

Margin tersedia dalam unit mentah (GetLeftMargin()) dan inci (GetLeftMarginInch()), dan GetHorizontalPageBreaks() / GetVerticalPageBreaks() mengembalikan posisi pemisah halaman yang saat ini ditetapkan pada lembar.

Worksheet::GetHyperlinks() mengembalikan HyperlinkCollection. Add() menerima sel atau rentang target ditambah sebuah alamat dan mengembalikan indeks hyperlink baru, yang digunakan untuk mengambil objek Hyperlink untuk perubahan lebih lanjut:

#include "aspose/cells_foss/Hyperlink.h"

sheet.GetCells()["A1"].PutValue("Documentation");
int linkIndex = sheet.GetHyperlinks().Add("A1", 1, 1, "https://example.com/docs");
Hyperlink link = sheet.GetHyperlinks()[linkIndex];
link.SetTextToDisplay("Documentation");
link.SetScreenTip("Open the docs site");

Workbook::GetDefinedNames() mengelola rentang bernama dengan cara yang sama — Add() mengembalikan indeks ke dalam DefinedNameCollection:

#include "aspose/cells_foss/DefinedName.h"

int nameIndex = workbook.GetDefinedNames().Add("Total", "=Data!$B$2:$B$3");
DefinedName total = workbook.GetDefinedNames()[nameIndex];
total.SetComment("Sum of tracked expenses");

Worksheet::GetValidations() mengikuti pola koleksi yang sama untuk aturan validasi data, yang dibatasi pada CellArea:

#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"

int ruleIndex = sheet.GetValidations().Add(CellArea::CreateCellArea("B2", "B3"));
Validation amountRule = sheet.GetValidations()[ruleIndex];
amountRule.SetType(ValidationType::Decimal);
amountRule.SetOperator(OperatorType::GreaterThan);
amountRule.SetFormula1("0");
amountRule.SetErrorTitle("Invalid Amount");
amountRule.SetErrorMessage("Enter a positive number");

Properti Dokumen dan Pengaturan Workbook

Workbook::GetDocumentProperties() menampilkan bidang metadata OOXML inti dan ekstended (judul, penulis, perusahaan, manajer, dan serupa), dan Workbook::GetSettings() mengontrol perilaku tingkat workbook seperti sistem tanggal:

#include "aspose/cells_foss/DocumentProperties.h"

workbook.GetDocumentProperties().SetCompany("Example Corp");
workbook.GetDocumentProperties().SetManager("Finance Team");

workbook.GetSettings().SetDate1904(false);

Nilai-nilai ini melakukan round-trip melalui penyimpanan dan pemuatan kembali dengan cara yang sama seperti konten sel, yang berguna untuk laporan yang memerlukan metadata konsisten di seluruh file yang dihasilkan.


Panduan Cepat

Aspose.Cells FOSS untuk C++ dibangun dari sumber dengan CMake. Kloning repositori dan tambahkan sebagai subdirektori atau tarik dengan FetchContent:

git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git
cmake_minimum_required(VERSION 3.15)
project(MyProject CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)

add_executable(MyApp main.cpp)
target_link_libraries(MyApp PRIVATE Aspose.Cells.Foss.Cpp)

Contoh manajemen spreadsheet minimal — buat, beri gaya, simpan, dan muat kembali:

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

using namespace Aspose::Cells_FOSS;

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

    Cells& cells = sheet.GetCells();
    cells["A1"].PutValue("Category");
    cells["B1"].PutValue("Amount");
    cells["A2"].PutValue("Travel");
    cells["B2"].PutValue(482.50);
    cells["A3"].PutValue("Supplies");
    cells["B3"].PutValue(129.99);
    cells["B4"].SetFormula("=SUM(B2:B3)");

    workbook.Save("expenses.xlsx");

    Workbook loaded("expenses.xlsx");
    Cells& loadedCells = loaded.GetWorksheets()["Expenses"].GetCells();
    double total = loadedCells["B4"].GetValue().AsDouble();

    return 0;
}

Format yang Didukung

FormatEkstensiBacaTulis
Xlsx.xlsx✓✓

LoadFormat dan SaveFormat keduanya mengekspos satu nilai Xlsx dalam rilis ini; konstruktor Workbook(path) dan Workbook(bytes) memuat input .xlsx, dan Workbook::Save() menulis output .xlsx ke jalur, aliran, atau buffer dalam memori.


Sumber Terbuka & Lisensi

Aspose.Cells FOSS untuk C++ dirilis di bawah lisensi MIT. Kode sumber tersedia di GitHub, dan perpustakaan dapat digunakan, dimodifikasi, serta didistribusikan kembali dalam proyek komersial dan sumber terbuka tanpa biaya runtime.


Memulai

Sumber Daya Terkait