כיצד לעבוד עם XLSX אריזה ב C++
Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx פורמט XML פתוח, מבפנים XlsxWorkbookSerializer מדריך זה מסביר כיצד להשתמש ב- API של טעינה/שמירה ומה שכבת האריזה מנהלת באופן אוטומטי.
הדרכה שלב אחר צעד
שלב 1: הגדרת הבניין
cmake_minimum_required(VERSION 3.15)
project(XlsxPackaging CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(XlsxPackaging main.cpp)
target_link_libraries(XlsxPackaging PRIVATE Aspose.Cells.Foss.Cpp)שלב 2: כולל כותרות
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;שלב 3: הורד קובץ XLSX קיימים
The Workbook(filePath) קוראים לבניין XlsxWorkbookSerializer::Load כדי לאחסן את כל החלקים של Open XML:
int main() {
Workbook workbook("input.xlsx");
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string title = sheet.GetCells()["A1"].GetStringValue();
return 0;
}שלב 4: שינוי ספר העבודה
לעשות כל שינוי בתאים, סגנון או מבנה באמצעות ה- API סטנדרטי:
sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");שלב 5: הציל את ספר העבודה
שיחת טלפון Workbook::Save(fileName) כדי לארוז את כל החלקים של XML פתוח בחזרה לארכיון XLSX:
workbook.Save("output.xlsx");
workbook.Dispose();הפורמט נובע מהתכנית .xlsx הרחבה - The XlsxWorkbookSerializer::Save שיטת הכתבה היא כתיבת xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml, ו xl/sharedStrings.xml חלקי מחלקה אוטומטיים.
שלב 6: להבין מה שכבת האריזה מנהלת
אין צורך לתקשר עם הפנימיות של אריזה ישירות.הסריליזור פועל:
| חלק | ניהול על ידי |
|---|---|
| מבנה ספר העבודה | XlsxWorkbookProperties |
| נתוני מעבדה | WorksheetXmlMapper |
| סגנונות ופינים | XlsxWorkbookStyles |
| שורות משותפות | SharedStringTableXmlMapper |
| תכונות מסמכים | XlsxDocumentProperties |
| שמות מוגדרים | XlsxWorkbookDefinedNames |
בעיות נפוצות ותקנות
הקובץ מאוחסן אך אינו נפתח ב- Excel להבטיח כי מסלול הקובץ המוצא משתמש ב .xlsx חיסכון עם הרחבה אחרת עשויה לייצר קובץ לא מוכר.
סגנונות אבודים לאחר סיבוב יישום Cell::SetStyle(style) לפני שיקראו Workbook::Save.סגנונות ששינו לאחר שמירה אינם כתובים.
קובץ כבד ריק בדוק את הקובץ אינו מוגן על ידי סיסמה והוא תקין XLSX (לא .xls או .xlsmהספרייה תומכת .xlsx רק .
שמות חסרים לאחר הצלתם שימוש Workbook::EnsureUniqueDefinedName() לפני שמצילים כדי לפתור כל סכסוך טווח.
זיכרון לא שוחרר שיחת טלפון workbook.Dispose() לאחר חיסכון לשחרר את כל משאבי אריזה XLSX הפנימיים.
שאלות נפוצות שואלים
האם אני יכול לחסוך בפורמטים אחרים מלבד XLSX?
שחרור v0.1 הנוכחי תומך בהצלת ל- XLSX בלבד.הטעינה CSV תתמוך אך לא זמינה בהצבעה ל - CSV.
האם הספרייה שומרת על חלקים קיימים שלא שיניתי?
כן.הסריליזור מעוגל את כל החלקים שהוא מחזיק.נתוני לוח העבודה, סגנונות ושמות מוגדרים לא משתנים נשמרים על שומרים.
האם אני יכול לבדוק את XML הירוק של חלק ספר העבודה?
The XmlDocument::SaveToUtf8() שיטה מסרילית מסמך XML לשורה.עם זאת, גישה ישירה לחלקים של ארכיון XLSX אינו מופיע ב- API הציבורי. XmlDocument עבור עיבוד XML מותאם אישית.
האם יש API זרימה עבור קבצים גדולים?
לא. ההשקה הנוכחית מחזירה את כל ספר העבודה לזיכרון.לקבצים גדולים מאוד, לשקול להדביק את עיבודך לתוך ספרים קטנים יותר.
מה יקרה אם אשמור את אותו קובץ שאני מעלה?
הספרייה כותבת למקור פנימי חדש לפני שמכתבים את הקובץ על הדיסק, כך שהשמירה במקום אינה פוגעת במקור.