צור קבצי Excel ב-C++

בעבר, כתבתי פוסט כיצד ליישם תכונות אוטומציה של Excel וליצור קבצי Excel XLS/XLSX מאפס באמצעות C#. היום, אני אראה לך כיצד ליצור חוברות עבודה של Excel, להוסיף נתונים לגיליונות עבודה של Excel, לחשב נוסחאות וליצור תרשימים וטבלאות בגיליונות עבודה באמצעות C++. כל תכונות האוטומציה של גיליונות אלקטרוניים יופעלו על ידי C++ Excel API - Aspose.Cells for C++.

Aspose.Cells for C++ היא ספריית C++ מקורית המאפשרת לך ליצור, לקרוא, לנתח ולהמיר מסמכי גיליון אלקטרוני ללא צורך ב-Microsoft Excel. הוא מספק סט שלם של תכונות אוטומציה של Excel שניתן להשתמש בהן כדי ליצור ולתפעל גיליונות אלקטרוניים של XLS/XLSX. במאמר זה, נסקור את התכונות הבאות של יצירת קבצי Excel XLS/XLSX מאפס.

C++ Excel Spreadsheet API - התקנה

אתה יכול להוריד את החבילה השלמה של קבצי הספרייה של Aspose.Cells for C++ מהקטע הורדות. החבילה מכילה גם יישום מסוף לדוגמא מוכן להפעלה.

צור קבצי Excel (XLS/XLSX) באמצעות C++

ראשית, ניצור חוברת עבודה פשוטה של Excel XLSX מאפס. חוברת עבודה מורכבת מגיליון עבודה אחד או מרובים וכל גליון עבודה מכיל את הנתונים בצורה של שורות ועמודות. לכן, על מנת ליצור גיליון אלקטרוני של Excel, עליך ליצור תחילה חוברת עבודה ולאחר מכן להוסיף בה גליונות עבודה. להלן השלבים ליצירת קובץ Excel באמצעות Aspose.Cells עבור C++.

  • צור אובייקט של המחלקה IWorkbook.
  • קבל את גליון העבודה הראשון (נוצר כברירת מחדל) של חוברת העבודה לאובייקט IWorksheet מ-IWorksheetCollection.
  • גש לתאים של גליון העבודה לאובייקט ICells באמצעות השיטה IWorksheet->GetICells().
  • גש לתא הרצוי של גליון העבודה לאובייקט ICell באמצעות השיטה ICells->GetObjectByIndex() על ידי ציון אינדקס השורה והעמודה.
  • הוסף ערך לתא באמצעות שיטת ICell->PutValue().
  • שמור את חוברת העבודה כקובץ ‎.xlsx באמצעות שיטת IWorkbook->Save().

דוגמת הקוד הבאה מראה כיצד ליצור קובץ Excel XLSX באמצעות C++.

/*create a new workbook*/
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

/*get the first worksheet*/
intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();
intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

/*get cell(0,0)*/
intrusive_ptr<ICells> cells = ws->GetICells();
intrusive_ptr<ICell> cell = cells->GetObjectByIndex(0, 0);

/*write "Hello World" to cell(0,0) of the first sheet*/
intrusive_ptr<String> str = new String("Hello World!");
cell->PutValue(str);

/*save this workbook to resultFile folder*/
wb->Save(resultPath->StringAppend(new String("workbook.xlsx")));

חוברת עבודה של אקסל

להלן צילום המסך של חוברת העבודה של Excel שיצרנו זה עתה.

צור Excel XLSX ב-C++

הוסף נתונים לגיליון עבודה של Excel באמצעות C++

בדוגמה הקודמת, ראינו כיצד ליצור קובץ אקסל פשוט ולהכניס ערך לתא מסוים באמצעות אינדקס שורה ועמודה. עם זאת, לרוב התאים בגיליונות העבודה של Excel מזוהים באמצעות אות העמודה ומספרי השורה כגון A1, A2, B1 וכו’. אז בואו נסתכל על הדוגמה של איך להכניס נתונים לגליון העבודה באמצעות שמות התאים. התהליך שונה רק בהוספת ערך לתא וכל שאר השלבים של יצירת חוברת העבודה וגיליונות העבודה של Excel זהים.

דוגמת הקוד הבאה מראה כיצד ליצור חוברת עבודה של Excel XLSX ולהוסיף אליה נתונים באמצעות C++.

//נתיב פלט קובץ אקסל
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//קרא קובץ אקסל קלט
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//גישה לגליון העבודה השני בקובץ האקסל
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//הוספת ערך מחרוזת לתא
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//הוספת ערך כפול לתא
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//הוספת ערך מספר שלם לתא
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//הוספת ערך בוליאני לתא
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//הגדרת פורמט התצוגה של התאריך
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//שמור את חוברת העבודה
workbook->Save(outputData);

חשב נוסחאות חוברת עבודה באמצעות C++

הגדרת נוסחאות בחוברות עבודה של Excel היא תכונה מדהימה לביצוע חישובים על נתונים. זה מקל על ביצוע חישובים מורכבים על הנתונים בצורה יעילה ויעילה. להלן השלבים להגדרה וחישוב נוסחאות בגיליונות עבודה של Excel.

דוגמת הקוד הבאה מראה כיצד להוסיף ולחשב נוסחאות בחוברת עבודה של Excel XLSX באמצעות C++.

//צור חוברת עבודה חדשה
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//קבל גליון עבודה ראשון שנוצר כברירת מחדל
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//הוספת ערך לתא "A1".
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//הוספת ערך לתא "A2".
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//הוספת ערך לתא "A3".
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//הוספת נוסחת SUM לתא "A4".
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//חישוב תוצאות נוסחאות
wb->CalculateFormula();

//קבל את הערך המחושב של התא "A4" והדפיס אותו על המסוף
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

צור טבלאות בגיליון עבודה של Excel באמצעות C++

הטבלאות בגיליונות העבודה של Excel משמשות לארגון קבוצת נתונים הממוקמת בטווח של תאים. טבלאות גם עוזרות לך לשמור על סוגים שונים של רשימות בגיליונות העבודה. להלן השלבים ליצירת טבלה בגליון העבודה של Excel.

  • צור חוברת עבודה חדשה של Excel באמצעות המחלקה IWorkbook.
  • גש לגליון העבודה המוגדר כברירת מחדל לאובייקט IWorksheet או הוסף אחד חדש.
  • הכנס ערך/נתונים לתאים באותו אופן שעשינו בדוגמה הקודמת.
  • הוסף את טווח התאים לאוסף רשימות של גליון עבודה באמצעות שיטת IWorksheet->GetIListObjects()->Add().
  • הכנס את הרשימה לאובייקט IListObject.
  • החל סגנון על הטבלה באמצעות שיטת IListObject->SetTableStyleType().
  • שמור את חוברת העבודה כקובץ xlsx.

דוגמת הקוד הבאה מראה כיצד ליצור טבלה בקובץ XLSX של Excel באמצעות C++.

// הצג אובייקט של חוברת עבודה
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// השגת ההפניה של גליון העבודה המוגדר כברירת מחדל (הראשון).
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// השגת אוסף התאים של גליון עבודה
intrusive_ptr<ICells> cells = worksheet->GetICells();

// הגדרת הערך לתאים
cells->GetObjectByIndex(new String("A1"))->PutValue("Employee");
cells->GetObjectByIndex(new String("B1"))->PutValue("Quarter");
cells->GetObjectByIndex(new String("C1"))->PutValue("Product");
cells->GetObjectByIndex(new String("D1"))->PutValue("Continent");
cells->GetObjectByIndex(new String("E1"))->PutValue("Country");
cells->GetObjectByIndex(new String("F1"))->PutValue("Sale");

cells->GetObjectByIndex(new String("A2"))->PutValue("David");
cells->GetObjectByIndex(new String("A3"))->PutValue("David");
cells->GetObjectByIndex(new String("A4"))->PutValue("David");
cells->GetObjectByIndex(new String("A5"))->PutValue("David");
cells->GetObjectByIndex(new String("A6"))->PutValue("James"); 

cells->GetObjectByIndex(new String("B2"))->PutValue(1);
cells->GetObjectByIndex(new String("B3"))->PutValue(2);
cells->GetObjectByIndex(new String("B4"))->PutValue(3);
cells->GetObjectByIndex(new String("B5"))->PutValue(4);
cells->GetObjectByIndex(new String("B6"))->PutValue(1); 

cells->GetObjectByIndex(new String("C2"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C3"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C4"))->PutValue("Chai");
cells->GetObjectByIndex(new String("C5"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C6"))->PutValue("Chang"); 

cells->GetObjectByIndex(new String("D2"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D3"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D4"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D5"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D6"))->PutValue("Europe"); 

cells->GetObjectByIndex(new String("E2"))->PutValue("China");
cells->GetObjectByIndex(new String("E3"))->PutValue("India");
cells->GetObjectByIndex(new String("E4"))->PutValue("Korea");
cells->GetObjectByIndex(new String("E5"))->PutValue("India");
cells->GetObjectByIndex(new String("E6"))->PutValue("France"); 

cells->GetObjectByIndex(new String("F2"))->PutValue(2000);
cells->GetObjectByIndex(new String("F3"))->PutValue(500);
cells->GetObjectByIndex(new String("F4"))->PutValue(1200);
cells->GetObjectByIndex(new String("F5"))->PutValue(1500);
cells->GetObjectByIndex(new String("F6"))->PutValue(500);  


// הוספת אובייקט רשימה חדש לגליון העבודה
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// הוספת סגנון ברירת מחדל לטבלה
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// הצג סך הכל
listObject->SetShowTotals(true);

// שמירת קובץ האקסל
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

חוברת עבודה של אקסל עם טבלה

צור טבלה ב-Excel ב-C++

צור תרשימים בגיליון אלקטרוני של Excel באמצעות C++

תרשימים בגיליונות אלקטרוניים של Excel משמשים כדי להמחיש את הנתונים באמצעות סוגים שונים של אובייקטים גרפיים. הם נותנים לנו תובנה והבנה מהירה של הנתונים, במיוחד כאשר הנתונים הם עצומים. Aspose.Cells for C++ תומך במגוון תרשימים כולל Sunburst, Treemap, Histogram, Pyramid, Bubble, Line, ו-רבים נוספים. להלן השלבים ליצירת תרשים בחוברת עבודה של Excel באמצעות Aspose.Cells עבור C++.

  • צור חוברת עבודה חדשה של Excel.
  • גש לגליון העבודה הרצוי לאובייקט IWorksheet.
  • הוסף תרשים חדש לגליון העבודה באמצעות שיטת IWorksheet->GetICharts()->Add() על ידי העברת סוג התרשים.
  • גש לתרשים החדש שנוסף לאובייקט IChart.
  • הגדר את מקור הנתונים עבור התרשים באמצעות השיטה IChart->GetNISeries()->Add().
  • שמור את חוברת העבודה כקובץ xlsx.

דוגמת הקוד הבאה מראה כיצד ליצור תרשים בקובץ XLSX של Excel באמצעות C++.

// נתיב פלט קובץ אקסל
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// צור חוברת עבודה חדשה
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// קבל גליון עבודה ראשון שנוצר כברירת מחדל
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// הוספת ערכים לדוגמה לתאים
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// הוספת תרשים לגליון העבודה
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// גישה למופע של התרשים החדש שנוסף
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// הוספת SeriesCollection (מקור נתונים בתרשים) לתרשים החל מתא "A1" ועד "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// שמירת קובץ האקסל
workbook->Save(outputChartTypePyramid);

חוברת עבודה של אקסל עם תרשים

צור תרשים ב-Excel ב-C++

סיכום

במאמר זה, כיסינו כיצד ליצור גיליונות אלקטרוניים של MS Excel מאפס באמצעות C++. המאמר מכיל גם הנחיות צעד אחר צעד ודוגמאות קוד כיצד ליצור טבלאות, תרשימים וחישוב נוסחאות בגיליונות עבודה של Excel. אתה יכול ללמוד עוד על תכונות מתקדמות אחרות הקשורות לאוטומציה של Excel מתוך תיעוד של Aspose.Cells for C++.

מאמר קשור