Giới thiệu
Aspose.Cells FOSS cho C++ là một thư viện mã nguồn mở để tạo, tải, chỉnh sửa và lưu các sổ làm việc Excel .xlsx từ mã C++ gốc, mà không cần Microsoft Excel hay bất kỳ tự động hoá COM nào. Nó được tích hợp vào quá trình xây dựng dựa trên CMake như một thư viện nguồn — không có bất kỳ phụ thuộc thời gian chạy bên ngoài nào cần cài đặt hay liên kết ngoài thư viện chuẩn C++.
Thư viện được cấp phép MIT và nhắm tới C++17. Nó được biên dịch với add_subdirectory hoặc FetchContent từ một bản sao git, vì không được phân phối qua trình quản lý gói như vcpkg hay Conan. Giao diện API được tổ chức quanh một Workbook sở hữu một WorksheetCollection, các bảng tính mà tiết lộ một đối tượng Cells để truy cập cấp độ ô, và một lớp mặt Style cho phông chữ, nền và viền. Nếu bạn xây dựng các dịch vụ backend, trình tạo báo cáo, hoặc các pipeline xuất dữ liệu bằng C++ và cần tạo hoặc đọc các tệp .xlsx mà không phải gọi tới Excel, thư viện này cung cấp cho bạn một cách tiếp cận nguyên bản.
Aspose.Cells FOSS cũng có sẵn cho .NET, Go, Java, Python, Rust và TypeScript. Thư viện C++ tuân theo cùng một cách tiếp cận như các thành phần còn lại trong họ: một API tập trung vào XLSX, dựa trên những gì thực sự được triển khai, dưới một giấy phép tự do.
Nội dung bao gồm
Cấu trúc Sổ làm việc và Bảng tính
Một Workbook bắt đầu với một bảng tính. Các bảng tính bổ sung được tạo bằng WorksheetCollection::Add, và các bảng tính hiện có có thể truy cập bằng chỉ mục hoặc tên qua bộ chỉ mục của bộ sưu tập. Mỗi Worksheet tiết lộ các ô của nó thông qua 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");
Giá trị ô, công thức và định dạng số
Cell::PutValue có các overload cho chuỗi, số nguyên, số thực, boolean và các loại giá trị khác, vì vậy không cần chuyển đổi chuỗi thủ công. SetFormula chấp nhận một công thức có hoặc không có = đầu và chuẩn hoá nó; GetType sau đó báo cáo một CellValueType của Formula. Định dạng số được áp dụng qua Style::SetNumberFormat và chỉ ảnh hưởng đến văn bản hiển thị được trả về bởi GetDisplayStringValue — giá trị lưu trữ gốc không thay đổi.
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"
Định dạng với phông chữ, màu nền và viền
Cell::GetStyle() và SetStyle() đọc và ghi một đối tượng Style mà nhóm Font, Borders và cài đặt màu nền. Màu sắc được tạo bằng Color::FromArgb, và các mẫu màu nền được thiết lập qua 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);
Xác thực dữ liệu và Định dạng có điều kiện
ValidationCollection::Add xác định phạm vi cho một quy tắc Validation tới một CellArea; việc đặt ValidationType của nó thành List với một giá trị Formula1 tạo ra một danh sách thả xuống trong ô. ConditionalFormattingCollection::Add tạo một nhóm định dạng được phạm vi bằng AddArea và được điền bằng AddCondition, mà nhận một FormatConditionType, một OperatorType, và một hoặc hai công thức.
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);
Cài đặt trang và Bố cục in
Worksheet::GetPageSetup() trả về một đối tượng PageSetup kiểm soát kích thước giấy, hướng, tỷ lệ, vùng in và các hàng/cột tiêu đề in. Các giá trị được xác thực khi gán — ví dụ, một lời gọi SetScale ngoài phạm vi sẽ gây ra một 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");
Bắt đầu nhanh
Aspose.Cells FOSS cho C++ không được phân phối qua trình quản lý gói — sao chép kho và thêm vào dự án CMake của bạn:
git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git
Thêm thư viện như một thư mục con của CMakeLists.txt của bạn và liên kết với mục tiêu aspose_cells_foss:
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp/Aspose.Cells.Foss.Cpp)
target_link_libraries(MyApp PRIVATE aspose_cells_foss)
Sau đó tạo, định dạng và lưu một 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;
}
Định dạng được hỗ trợ
| Định dạng | Phần mở rộng | Đọc | Ghi |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
XLSX là định dạng duy nhất mà bản phát hành hiện tại có thể đọc và ghi. Các hàm khởi tạo file và stream của Workbook tải dữ liệu .xlsx, và Save ghi lại chúng; các enum LoadFormat và SaveFormat điều khiển việc lựa chọn định dạng một cách rõ ràng trong các lời gọi đó.
Mã nguồn mở & Giấy phép
Aspose.Cells FOSS cho C++ được cấp phép MIT. Mã nguồn đầy đủ có sẵn trên GitHub, và giấy phép cho phép sử dụng thương mại, sửa đổi và phân phối lại.