บทนำ

Aspose.Cells FOSS สำหรับ C++ เป็นไลบรารีโอเพนซอร์สสำหรับการสร้าง โหลด แก้ไข และบันทึกไฟล์ Excel .xlsx จากโค้ด C++ เนทีฟ โดยไม่ต้องใช้ Microsoft Excel หรือการทำ COM automation ใดๆ มันสามารถบูรณาการเข้ากับการสร้างแบบอิง CMake เป็นไลบรารีซอร์ส — ไม่ต้องมีการพึ่งพา runtime ภายนอกใดๆ นอกเหนือจากไลบรารีมาตรฐานของ C++.

ไลบรารีนี้ใช้ใบอนุญาต MIT และมุ่งเป้าไปที่ C++17 มันถูกสร้างด้วย add_subdirectory หรือ FetchContent จาก git clone เนื่องจากไม่ได้แจกจ่ายผ่านแพคเกจเมเนเจอร์เช่น vcpkg หรือ Conan พื้นผิว API ถูกจัดระเบียบรอบ Workbook ที่เป็นเจ้าของ WorksheetCollection แผ่นงานที่เปิดเผยอ็อบเจ็กต์ Cells สำหรับการเข้าถึงระดับเซลล์ และฟาซาด Style สำหรับแบบอักษร การเติมสี และเส้นขอบ หากคุณสร้างบริการแบ็กเอนด์ ตัวสร้างรายงาน หรือ pipeline การส่งออกข้อมูลใน C++ และต้องการสร้างหรืออ่านไฟล์ .xlsx โดยไม่ต้องเรียก Excel ไลบรารีนี้จะให้วิธีแบบเนทีฟสำหรับทำเช่นนั้น.

Aspose.Cells FOSS ยังมีให้ใช้กับ .NET, Go, Java, Python, Rust, และ TypeScript ไลบรารี C++ ปฏิบัติตามแนวทางเดียวกับส่วนอื่นของตระกูล: API ที่มุ่งเน้น XLSX โดยอิงจากสิ่งที่ได้ทำการใช้งานจริง ภายใต้ใบอนุญาตที่ผ่อนปรน.


สิ่งที่รวมอยู่

โครงสร้าง Workbook และ Worksheet

Workbook จะเริ่มต้นด้วยแผ่นงานหนึ่งแผ่น แผ่นงานเพิ่มเติมจะสร้างด้วย WorksheetCollection::Add และแผ่นงานที่มีอยู่สามารถเข้าถึงได้โดยใช้ดัชนีหรือชื่อผ่านตัวชี้ของคอลเลกชัน แต่ละ Worksheet จะเปิดเผยเซลล์ของมันผ่าน 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");

ค่าเซลล์, สูตร, และรูปแบบตัวเลข

Cell::PutValue มี overloads สำหรับสตริง, จำนวนเต็ม, ดับเบิล, บูลีน, และชนิดค่าอื่น ๆ, ดังนั้นจึงไม่ต้องแปลงสตริงด้วยตนเอง. SetFormula ยอมรับสูตรที่มีหรือไม่มี = นำหน้าและทำการปรับให้เป็นมาตรฐาน; GetType จากนั้นรายงาน CellValueType ของ Formula. การจัดรูปแบบตัวเลขจะถูกนำไปใช้ผ่าน Style::SetNumberFormat และมีผลต่อข้อความที่แสดงผลที่ส่งกลับจาก GetDisplayStringValue — ค่าที่เก็บไว้ภายในไม่ได้รับการเปลี่ยนแปลง.

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"

การจัดรูปแบบด้วยแบบอักษร, การเติมสี, และเส้นขอบ

Cell::GetStyle() และ SetStyle() อ่านและเขียนอ็อบเจ็กต์ Style ที่รวม Font, Borders, และการตั้งค่าการเติมสี. สีถูกสร้างด้วย Color::FromArgb, และรูปแบบการเติมสีถูกกำหนดผ่าน 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);

การตรวจสอบข้อมูลและการจัดรูปแบบตามเงื่อนไข

ValidationCollection::Add กำหนดขอบเขตของกฎ Validation ไปยัง CellArea; การตั้งค่า ValidationType ของมันเป็น List พร้อมค่าที่เป็น Formula1 จะทำให้เกิดเมนูดรอปดาวน์ในเซลล์. ConditionalFormattingCollection::Add สร้างกลุ่มการจัดรูปแบบที่กำหนดขอบเขตด้วย AddArea และเติมข้อมูลด้วย AddCondition, ซึ่งรับ FormatConditionType, OperatorType, และหนึ่งหรือสองสูตร.

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

การตั้งค่าหน้าและเค้าโครงการพิมพ์

Worksheet::GetPageSetup() คืนค่าอ็อบเจ็กต์ PageSetup ที่ควบคุมขนาดกระดาษ, แนววาง, การสเกล, พื้นที่พิมพ์, และแถว/คอลัมน์หัวเรื่องการพิมพ์. ค่าจะถูกตรวจสอบความถูกต้องเมื่อกำหนดค่า — ตัวอย่างเช่น, การเรียก SetScale ที่อยู่นอกช่วงจะทำให้เกิด 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");

เริ่มต้นอย่างเร็ว

Aspose.Cells FOSS สำหรับ C++ ไม่ได้จัดจำหน่ายผ่านตัวจัดการแพ็กเกจ — คัดลอกรีโพซิทอรีและเพิ่มเข้าไปในโครงการ CMake ของคุณ:

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

เพิ่มไลบรารีเป็นไดเรกทอรีย่อยของ CMakeLists.txt ของคุณเองและลิงก์กับเป้าหมาย aspose_cells_foss:

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

จากนั้นสร้าง, ปรับสไตล์, และบันทึกเวิร์กบุ๊ก:

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

รูปแบบที่รองรับ

รูปแบบส่วนขยายอ่านเขียน
XLSX.xlsx✓✓

XLSX เป็นรูปแบบเดียวที่รุ่นปัจจุบันอ่านและเขียนได้ ตัวสร้างไฟล์และสตรีมของ Workbook โหลดข้อมูล .xlsx และ Save เขียนข้อมูลนั้นออกใหม่; enums LoadFormat และ SaveFormat ควบคุมการเลือกรูปแบบโดยชัดเจนในการเรียกเหล่านั้น.


โอเพนซอร์สและการให้สิทธิ์

Aspose.Cells FOSS สำหรับ C++ ได้รับใบอนุญาตแบบ MIT. โค้ดต้นฉบับทั้งหมดพร้อมให้ดาวน์โหลดบน GitHub, และใบอนุญาตอนุญาตให้ใช้ในเชิงพาณิชย์, แก้ไข, และแจกจ่ายต่อ.


เริ่มต้นใช้งาน

แหล่งข้อมูลที่เกี่ยวข้อง