Giriş

Elektronik tablo yönetimi, C++ için Aspose.Cells FOSS içinde programların ilk dokunduğu bölümdür: dosyanın sahibi olan Workbook, içindeki Worksheet nesneleri ve değerleri, formülleri ve biçimlendirmeyi tutan Cells koleksiyonu. Bu yazı, genel bir girişten daha derinlemesine bu yüzeyi inceliyor — çalışma kitapları ve çalışma sayfalarının nasıl oluşturulup gezileceği, hücre değerlerinin ve formüllerin nasıl okunup yazılacağı, Style, Font, Color ve Borders‘nın çıktıyı biçimlendirmek için nasıl birleştirildiği ve PageSetup, Hyperlink, DefinedName ve Validation‘un ham hücre ızgarası etrafında nasıl yapı eklediği.

Burada ele alınan her sınıf, aspose/cells_foss/ başlıkları altında bildirilen yerel C++ API bir parçasıdır. COM bütünleşmesi yoktur ve Microsoft Excel’in kurulu olmasına bağımlılık yoktur — kütüphane .xlsx paket formatını doğrudan okur ve yazar, bu da mevcut sürümün yalnızca .xlsx‘yi hem yükleme hem de kaydetme tarafında desteklemesinin nedenidir.

Aşağıdaki örnekler birbirine dayanarak ilerler: bir çalışma kitabı oluşturulur, çalışma sayfaları ve hücreler doldurulur, stil uygulanır ve dosya kaydedilip yeniden yüklenerek dönüşün doğruluğu onaylanır. Tüm kod, kütüphanenin kendi uyumluluk, altın ve birim test paketlerinden uyarlanmıştır, bu yüzden gerçek .xlsx çıktısına karşı gerçekleştirilen işlemleri yansıtır.


Temel Özellikler

Çalışma Kitabı ve Çalışma Sayfası Yönetimi

Bir Workbook, WorksheetCollection‘inde tek bir çalışma sayfası ile başlar. Çalışma sayfaları Add() ile eklenir, indeks ya da ada göre bulunur ve SetName() ile yeniden adlandırılır. WorksheetCollection ayrıca hangi sayfanın aktif olduğunu izler:

#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

Kaydetme ve yeniden yükleme aynı Workbook türü üzerinden gerçekleşir. Workbook::Save(), bir dosya yolunu kabul eder ve bir Workbook, doğrudan bir yoldan veya bellek içi bayt tamponundan oluşturulabilir; bu, hücre değerlerini ve formüllerini geri döndürür:

workbook.Save("report.xlsx");

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

Hücre Değerleri ve Formüller

Cells, Worksheet::GetCells() aracılığıyla erişilen, hücreleri A1 stilinde referansla indeksler. Cell::PutValue(), string, tam sayı, çift ve boolean değerlerini kabul eder, SetFormula() bir Excel formül dizesi depolar ve GetValue(), tiplenmiş erişimciler (AsString(), AsInteger(), AsDouble(), AsBool(), AsDateTime()) içeren bir CellValue döndürür:

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(), depolanan CellValueType‘ı (Blank, String, Number, Boolean, DateTime veya Formula) rapor eder ve GetDisplayStringValue(), değeri Excel’de görüneceği şekilde biçimlendirerek, Style aracılığıyla uygulanan herhangi bir sayı biçimini göz önünde bulundurarak döndürür.

Stil, Font, Renk ve Kenarlıklarla Stil Verme

Cell::GetStyle(), SetStyle() ile değiştirilebilen ve yeniden uygulanabilen bir Style nesnesi döndürür. Style, bir Font, bir Borders kümesi, doldurma deseni ve renk, hizalama ve sayı biçimini ortaya koyar:

#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, bir değer türüdür: GetStyle() ile geri okunduğunda, SetStyle() ile son olarak ayarlanan şey yansır; bu da tek bir stil oluşturup onu bir başlık satırı ya da bir veri hücresi aralığına uygulamayı kolaylaştırır.

Sayfa Ayarı ve Yazdırma Yapılandırması

Worksheet::GetPageSetup() bir PageSetup nesnesi döndürür; kağıt boyutu, yönlendirme, kenar boşlukları, ölçekleme, baskı başlıkları ve sayfa sonlarını kapsar:

#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);

Kenar boşlukları ham birimler (GetLeftMargin()) ve inç (GetLeftMarginInch()) olarak mevcuttur ve GetHorizontalPageBreaks() / GetVerticalPageBreaks() sayfada şu anda ayarlanmış sayfa sonu konumlarını döndürür.

Köprüler, Tanımlı Adlar ve Veri Doğrulama

Worksheet::GetHyperlinks() bir HyperlinkCollection döndürür. Add(), hedef hücreyi veya aralığı bir adresle alır ve yeni köprünün dizinini döndürür; bu dizin, daha sonraki değişiklikler için Hyperlink nesnesini elde etmekte kullanılır:

#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() adlandırılmış aralıkları aynı şekilde yönetir — Add(), DefinedNameCollection içinde bir dizin döndürür:

#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(), veri doğrulama kuralları için aynı koleksiyon desenini izler; bu kurallar bir CellArea içinde sınırlıdır:

#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");

Belge Özellikleri ve Çalışma Kitabı Ayarları

Workbook::GetDocumentProperties(), temel ve genişletilmiş OOXML meta veri alanlarını (başlık, yazar, şirket, yönetici ve benzerleri) ortaya çıkarır ve Workbook::GetSettings(), tarih sistemi gibi çalışma kitabı düzeyindeki davranışları kontrol eder:

#include "aspose/cells_foss/DocumentProperties.h"

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

workbook.GetSettings().SetDate1904(false);

Bu değerler, hücre içeriği gibi kaydetme ve yeniden yükleme sırasında aynı şekilde dönüş yapar, bu da oluşturulan dosyalar arasında tutarlı meta veriye ihtiyaç duyan raporlar için faydalıdır.


Hızlı Başlangıç

Aspose.Cells FOSS for C++ CMake ile kaynaktan derlenir. Depoyu klonlayın ve ya bir alt dizin olarak ekleyin ya da FetchContent ile çekin:

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)

Minimum bir elektronik tablo yönetimi örneği — oluştur, stil ekle, kaydet ve yeniden yükle:

#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;
}

Desteklenen Biçimler

BiçimUzantıOkuYaz
Xlsx.xlsx✓✓

LoadFormat ve SaveFormat bu sürümde tek bir Xlsx değerini ortaya çıkarır; Workbook(path) ve Workbook(bytes) yapıcıları .xlsx girişi yükler ve Workbook::Save() .xlsx çıktısını bir yola, bir akışa veya bellek içi tampona yazar.


Açık Kaynak ve Lisanslama

Aspose.Cells FOSS for C++ MIT lisansı altında yayınlanmıştır. Kaynak kodu GitHub üzerinde mevcuttur ve kütüphane, ticari ve açık kaynak projelerde çalışma zamanı ücreti olmadan kullanılabilir, değiştirilebilir ve yeniden dağıtılabilir.


Başlarken

İlgili Kaynaklar