C++ में XLSX पैकेजिंग के साथ कैसे काम करें

C++ में XLSX पैकेजिंग के साथ कैसे काम करें

Aspose.Cells FOSS for C++ Excel फ़ाइलों को .xlsx Open 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 फ़ाइल लोड करें

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) को कॉल करके सभी Open XML भागों को फिर से XLSX आर्काइव में पैक करें:

workbook.Save("output.xlsx");
workbook.Dispose();

फ़ॉर्मेट .xlsx एक्सटेंशन से अनुमानित किया जाता है। XlsxWorkbookSerializer::Save मेथड स्वचालित रूप से xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml, और xl/sharedStrings.xml भागों को लिखने को संभालती है।


चरण 6: पैकेजिंग लेयर क्या प्रबंधित करती है, समझें

आपको पैकेजिंग इंटर्नल्स के साथ सीधे इंटरैक्ट करने की आवश्यकता नहीं है। सीरियलाइज़र संभालता है:

Partप्रबंधित द्वारा
वर्कबुक संरचनाXlsxWorkbookProperties
वर्कशीट डेटाWorksheetXmlMapper
शैलियाँ और फ़ॉन्टXlsxWorkbookStyles
साझा स्ट्रिंग्सSharedStringTableXmlMapper
दस्तावेज़ गुणXlsxDocumentProperties
परिभाषित नामXlsxWorkbookDefinedNames

सामान्य समस्याएँ और समाधान

फ़ाइल सहेजी गई है लेकिन Excel में नहीं खुलती सुनिश्चित करें कि आउटपुट फ़ाइल पथ उपयोग करता है .xlsx एक्सटेंशन। अलग एक्सटेंशन के साथ सहेजने से फ़ाइल अपरिचित हो सकती है।

राउंड-ट्रिप के बाद Styles खो गए Apply Cell::SetStyle(style) कॉल करने से पहले Workbook::Save. सेव के बाद संशोधित Styles नहीं लिखे जाते।

फ़ाइल खाली के रूप में लोड होती है फ़ाइल पासवर्ड-सुरक्षित नहीं है और एक वैध XLSX है (नहीं .xls or .xlsm). लाइब्रेरी समर्थन करती है .xlsx केवल।

सेव के बाद परिभाषित नाम गायब हैं उपयोग करें Workbook::EnsureUniqueDefinedName() सहेजने से पहले किसी भी स्कोप टकराव को हल करने के लिए।

स्मृति जारी नहीं की गई Call workbook.Dispose() सहेजने के बाद सभी आंतरिक XLSX पैकेजिंग संसाधनों को मुक्त करने के लिए।

अक्सर पूछे जाने वाले प्रश्न

क्या मैं XLSX के अलावा अन्य फ़ॉर्मैट में सहेज सकता हूँ?

वर्तमान v0.1 रिलीज़ केवल XLSX में सेव करने का समर्थन करता है। CSV लोड करना समर्थित है लेकिन CSV में सेव करना उपलब्ध नहीं है।

क्या लाइब्रेरी उन मौजूदा हिस्सों को संरक्षित रखती है जिन्हें मैंने संशोधित नहीं किया है?

हाँ। सीरियलाइज़र सभी लोड किए गए हिस्सों को राउंड-ट्रिप करता है। बिना संशोधित वर्कशीट डेटा, स्टाइल्स, और परिभाषित नाम सेव करते समय संरक्षित रहते हैं।

क्या मैं वर्कबुक भाग का कच्चा XML निरीक्षण कर सकता हूँ?

XmlDocument::SaveToUtf8() मेथड एक XML दस्तावेज़ को स्ट्रिंग में सीरियलाइज़ करता है। हालांकि, XLSX आर्काइव हिस्सों तक प्रत्यक्ष पहुंच सार्वजनिक API में उपलब्ध नहीं है। कस्टम XML प्रोसेसिंग के लिए XmlDocument का उपयोग करें।

क्या बड़े फ़ाइलों के लिए कोई स्ट्रीमिंग API उपलब्ध है?

नहीं। वर्तमान रिलीज़ पूरी वर्कबुक को मेमोरी में लोड करता है। बहुत बड़ी फ़ाइलों के लिए, अपनी प्रोसेसिंग को छोटे वर्कबुक में विभाजित करने पर विचार करें।

यदि मैं उसी फ़ाइल को ओवरराइट करूँ जिसे मैंने लोड किया है, तो क्या होगा?

यह समर्थित है। लाइब्रेरी डिस्क पर फ़ाइल को ओवरराइट करने से पहले एक नई आंतरिक बफ़र में लिखती है, इसलिए इन-प्लेस सेव स्रोत को भ्रष्ट नहीं करता।

यह भी देखें

 हिन्दी