C++ में Excel के साथ कार्य: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
C++ में एप्लिकेशन विकसित करते समय, Microsoft Excel फ़ाइलों (प्रारूप .xls और .xlsx) के साथ इंटरैक्ट करने की आवश्यकता अक्सर उत्पन्न होती है। इसमें रिपोर्ट निर्यात करना, डेटा आयात करना, तालिकाओं को स्वचालित करना या बड़ी मात्रा में जानकारी का विश्लेषण करना शामिल हो सकता है। समृद्ध मानक लाइब्रेरी (Python, C#) वाली भाषाओं के विपरीत, C++ में Excel के साथ कार्य करने के लिए अंतर्निहित साधन नहीं हैं, लेकिन कई शक्तिशाली तृतीय-पक्ष लाइब्रेरीज़ हैं जो इस समस्या का समाधान करती हैं। इस लेख में, हम तीन लोकप्रिय समाधानों पर विचार करेंगे: xlnt, libxl और OpenXLSX, और उनमें से प्रत्येक के लिए कोड उदाहरण प्रस्तुत करेंगे।
1. xlnt लाइब्रेरी (मुफ़्त, ओपन-सोर्स)
xlnt .xlsx प्रारूप की फ़ाइलों को पढ़ने, लिखने और संशोधित करने के लिए एक आधुनिक C++ लाइब्रेरी है। यह COM ऑब्जेक्ट या स्थापित Excel पर निर्भर नहीं है, जो इसे क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट्स (Windows, Linux, macOS) के लिए आदर्श बनाता है। लाइब्रेरी C++14/17 मानक का उपयोग करती है और समुदाय द्वारा सक्रिय रूप से समर्थित है।
मुख्य क्षमताएँ:
- सेल, पंक्तियों, स्तंभों को पढ़ना और लिखना।
- शैलियों का समर्थन (फ़ॉन्ट, रंग, बॉर्डर, संरेखण)।
- सूत्रों, श्रेणियों, मर्ज किए गए सेल के साथ कार्य।
- एकाधिक शीट का प्रबंधन।
- चित्रों और चार्ट के साथ कार्य (सीमित)।
स्थापना (vcpkg के माध्यम से या स्रोत से निर्माण):
vcpkg install xlntउदाहरण: एक सरल XLSX फ़ाइल बनाना
#include <xlnt/xlnt.hpp>
int main() { xlnt::workbook wb; xlnt::worksheet ws = wb.active_sheet(); ws.title("रिपोर्ट");
// डेटा लिखना ws.cell("A1").value("नाम"); ws.cell("B1").value("मात्रा"); ws.cell("C1").value("मूल्य");
ws.cell("A2").value("उत्पाद 1"); ws.cell("B2").value(10); ws.cell("C2").value(250.5);
// शीर्षकों के लिए शैली xlnt::header_footer hf; xlnt::font bold_font(true); ws.cell("A1").font(bold_font);
wb.save("example.xlsx"); return 0;}उदाहरण: मौजूदा फ़ाइल से डेटा पढ़ना
#include <xlnt/xlnt.hpp>#include <iostream>
int main() { xlnt::workbook wb; wb.load("example.xlsx"); xlnt::worksheet ws = wb.active_sheet();
for (auto row : ws.rows(false)) { for (auto cell : row) { std::cout << cell.to_string() << "\\t"; } std::cout << std::endl; } return 0;}2. libxl लाइब्रेरी (व्यावसायिक, मुफ़्त संस्करण उपलब्ध)
libxl .xls और .xlsx के साथ कार्य करने के लिए एक तेज़ और हल्की लाइब्रेरी है। यह पुराने बाइनरी Excel 97-2003 प्रारूप और आधुनिक OOXML दोनों का समर्थन करती है। लाइब्रेरी एक व्यावसायिक लाइसेंस के तहत वितरित की जाती है, लेकिन गैर-व्यावसायिक उपयोग के लिए एक सीमा (शीट पर वॉटरमार्क) के साथ एक मुफ़्त संस्करण उपलब्ध है।
मुख्य क्षमताएँ:
- दोनों प्रारूपों का समर्थन: XLS और XLSX।
- सेल फ़ॉर्मेटिंग: फ़ॉन्ट, रंग, बॉर्डर, भरण।
- सूत्रों, मर्ज किए गए सेल, ऑटोफ़िल्टर के साथ कार्य।
- शीट, चार्ट का प्रबंधन (सीमित)।
- बड़ी फ़ाइलों के साथ कार्य करते समय उच्च प्रदर्शन।
स्थापना: आधिकारिक वेबसाइट (libxl.com) से SDK डाउनलोड करें और अपने प्रोजेक्ट में हेडर फ़ाइलों और लाइब्रेरी को शामिल करें।
उदाहरण: XLSX में डेटा लिखना
#include "libxl.h"
int main() { libxl::Book* book = xlCreateXMLBook(); // या XLS के लिए xlCreateBook() if (book) { libxl::Sheet* sheet = book->addSheet("शीट1"); if (sheet) { sheet पुस्तकालय में भी
C++ के लिए ORM: तुलना और उपयोग के उदाहरण
Chronicle Map Java: पूरी गाइड उदाहरणों के साथ
C++ अनुप्रयोगों की निगरानी: मेट्रिक्स संग्रह के लिए metrics लाइब्रेरी
Swift (iOS/macOS) पर SMS भेजना: MessageUI API और तृतीय-पक्ष सेवाएँ