מבוא
Aspose.Cells FOSS עבור C++ היא ספרייה קוד פתוח ליצירה, טעינה, עריכה ושמירה של חוברות עבודה של Excel .xlsx מקוד C++ מקורי, ללא צורך ב-Microsoft Excel או כל אוטומציית COM. היא משולבת בבנייה מבוססת CMake כספריית מקור — אין תלות זמן ריצה חיצונית להתקנה או קישור מעבר לספריית התקן של C++.
הספרייה מפוקחת ברישיון MIT ומיועדת ל-C++17. היא נבנית עם add_subdirectory או FetchContent משכפול git, מכיוון שהיא אינה מופצת דרך מנהל חבילות כגון vcpkg או Conan. ממשק ה-API מאורגן סביב Workbook שמחזיק WorksheetCollection, גיליונות עבודה שמחשפים אובייקט Cells לגישה ברמת התא, ופיסת חזית Style לגופנים, מילויים וגבולות. אם אתם בונים שירותי backend, מחוללי דוחות, או צינורות יצוא נתונים ב-C++ וצריכים לייצר או לקרוא קובצי .xlsx ללא צורך בהרצת Excel, ספרייה זו מספקת דרך מקומית לעשות זאת.
Aspose.Cells FOSS זמינה גם עבור .NET, Go, Java, Python, Rust ו-TypeScript. ספריית ה-C++ פועלת באותו האופן כמו שאר המשפחה: API ממוקד XLSX שמבוסס על מה שבאמת ממומש, תחת רישיון מתיר.
מה נכלל
מבנה חוברת עבודה וגיליון
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 למחרוזות, שלמים, doubles, booleans, וסוגי ערכים אחרים, ולכן אין צורך בהמרת מחרוזת ידנית. 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 כותבת אותם חזרה; המונים LoadFormat ו-SaveFormat שולטים בבחירת פורמט מפורשת בקריאות אלו.
קוד פתוח ורישוי
Aspose.Cells FOSS עבור C++ ברישיון MIT. הקוד המלא זמין ב-GitHub, והרישיון מאפשר שימוש מסחרי, שינוי והפצה מחדש.