العمل مع Excel في C++: المكتبات والأمثلة والأدوات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع Excel في C++: نظرة عامة على المكتبات وأمثلة الكود



على الرغم من أن لغة C++ لا تحتوي على دعم مدمج لتنسيق Excel، إلا أن هناك العديد من المكتبات الناضجة التي تسمح بقراءة وإنشاء وتحرير ملفات .xlsx و .xls. في هذه المقالة، سنستعرض ثلاث أدوات شائعة: libxlsxwriter و xlsxio و OpenXLSX. ستتعلم كيفية تثبيت كل منها، وستحصل على أمثلة عملية للمهام النموذجية - بدءًا من إنشاء التقارير وصولاً إلى استيراد البيانات.



1. libxlsxwriter - إنشاء XLSX من الصفر



libxlsxwriter هي مكتبة C خفيفة لكتابة ملفات Excel 2007+ (XLSX). لا تتطلب كائنات COM أو تثبيت Office. تدعم التنسيق والصيغ والرسوم البيانية ودمج الخلايا والتنسيق الشرطي.



التثبيت (Linux / macOS):

git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermakesudo make install


مثال: إنشاء تقرير بسيط

#include <xlsxwriter.h>

int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Sales");

// العناوين worksheet_write_string(worksheet, 0, 0, "المنتج", NULL); worksheet_write_string(worksheet, 0, 1, "الكمية", NULL); worksheet_write_string(worksheet, 0, 2, "السعر", NULL);

// البيانات worksheet_write_string(worksheet, 1, 0, "لابتوب", NULL); worksheet_write_number(worksheet, 1, 1, 10, NULL); worksheet_write_number(worksheet, 1, 2, 75000, NULL);

// صيغة المجموع worksheet_write_formula(worksheet, 2, 2, "=C2*B2", NULL);

workbook_close(workbook); return 0;}


الترجمة: g++ -o create_excel create_excel.cpp -lxlsxwriter



المزايا: أداء عالٍ، حجم صغير، دعم نشط.
العيوب: كتابة فقط (لا يمكن قراءة الملفات الموجودة).



2. xlsxio - قراءة وكتابة XLSX



xlsxio هي مكتبة بلغة C مع روابط لـ C++ تدعم قراءة وكتابة ملفات XLSX. تعتمد على minizip و expat. مناسبة تمامًا للمعالجة التدفقية للملفات الكبيرة.



التثبيت:

git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiocmake .makesudo make install


مثال: قراءة البيانات من Excel

#include <xlsxio_read.h>

int main() { xlsxioreader reader = xlsxioread_open("data.xlsx"); if (reader) { xlsxioreadersheet sheet = xlsxioread_sheet_open(reader, NULL, XLSXIOREAD_SKIP_EMPTY_ROWS); while (xlsxioread_sheet_next_row(sheet)) { const char* value; while ((value = xlsxioread_sheet_next_cell(sheet)) != NULL) { printf("%s\\t", value); } printf(""); } xlsxioread_sheet_close(sheet); xlsxioread_close(reader); } return 0;}


الترجمة: g++ -o read_excel read_excel.cpp -lxlsxio_read



المزايا: عمل ثنائي الاتجاه، دعم الملفات الكبيرة.
العيوب: تنسيق محدود (نصوص وأرقام فقط).



3. OpenXLSX - واجهة حديثة C++17



OpenXLSX هي مكتبة header-only للغة C++17 توفر واجهة برمجة تطبيقات كائنية التوجه لقراءة وكتابة XLSX. لا تتطلب تبعيات خارجية بخلاف المكتبة القياسية.



التثبيت:

git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake ..makesudo make install


مثال: إنشاء ملف مع تنسيق

#include <OpenXLSX/OpenXLSX.hpp>using namespace OpenXLSX;

int main() {

توصيات