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

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

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

ابدأ الدورة

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



العمل مع جداول Excel (تنسيق .xlsx) هي إحدى المهام الشائعة في البرمجة التطبيقية. لا يوجد دعم مدمج لهذا التنسيق في لغة C++، ولكن هناك العديد من المكتبات عالية الجودة التي تسمح بقراءة وإنشاء وتحرير ملفات Excel. في هذه المقالة، سنستعرض أربعة أساليب رئيسية: libxlsxwriter و xlsxio و OpenXLSX والعمل عبر واجهة COM على نظام Windows.



1. libxlsxwriter — إنشاء XLSX "أثناء التشغيل"



libxlsxwriter هي مكتبة بلغة C، مع أغلفة للغة C++. تسمح بإنشاء ملفات XLSX كاملة مع دعم التنسيق والصيغ والرسوم البيانية ودمج الخلايا. الميزة الرئيسية هي السرعة والاستهلاك الأدنى للذاكرة.



التثبيت

قم بتنزيل المصدر من GitHub وقم ببنائه باستخدام CMake:

git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemakesudo make install


مثال: إنشاء جدول بصيغة

#include <xlsxwriter.h>

int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "المبيعات");

// العناوين 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, 0, 3, "الإجمالي", NULL);

// البيانات worksheet_write_string(worksheet, 1, 0, "تفاح", NULL); worksheet_write_number(worksheet, 1, 1, 100, NULL); worksheet_write_number(worksheet, 1, 2, 2.5, NULL);

// الصيغة worksheet_write_formula(worksheet, 1, 3, "=B2*C2", NULL);

workbook_close(workbook); return 0;}


للتجميع، استخدم:

g++ -o create_excel create_excel.cpp -lxlsxwriter


2. xlsxio — القراءة والكتابة البسيطة



xlsxio هي مكتبة خفيفة الوزن بلغة C، موجهة لقراءة ملفات XLSX. تدعم التحليل التدفقي، مما يسمح بمعالجة الملفات الكبيرة دون تحميلها في الذاكرة.



التثبيت

git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiomkdir build && cd buildcmake ..makesudo make install


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

#include <xlsxio_read.h>

int main() { xlsxioreader xlsxioread = xlsxioread_open("data.xlsx"); if (!xlsxioread) return 1;

xlsxioreadersheet sheet = xlsxioread_sheet_open(xlsxioread, NULL, 0); if (sheet) { 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(xlsxioread); return 0;}


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



OpenXLSX هي مكتبة بلغة C++17، توفر واجهة برمجة تطبيقات موجهة للكائنات للعمل مع XLSX. تدعم القراءة والكتابة والأنماط والعمل مع أوراق متعددة.



التثبيت

git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake .. -DOPENXLSX_BUILD_TESTS=OFFmakesudo make install


مثال: الكتابة مع التنسيق

#include <OpenXLSX/OpenXLSX.hpp>

int main() { using namespace OpenXLSX;

XLDocument doc; doc.create("formatted.xlsx"); auto wks = doc.workbook().worksheet("Sheet1");

// الكتابة مع التنسيق XLCellValue v

توصيات