البرمجة

قراءة ملف Excel باستخدام C++ وVisual Studio

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

أولاً وقبل كل شيء، يجب عليك استخدام مكتبة تسمى “Microsoft Excel Object Library” والتي تأتي مع برنامج Office. يمكنك تضمين هذه المكتبة في مشروعك باستخدام Visual Studio.

بعد ذلك، قم بفتح مشروعك في Visual Studio وانشئ ملف Excel جديد واملأه بالبيانات الضرورية. يُفضل تنظيم البيانات بحيث تضع المعلومات التي لا تحتاجها في الحسابات في الأسطر الأولى، والبيانات الفعلية في الأسطر التالية.

الآن، استخدم الشيفرة التالية كأساس لتحقيق هدفك:

cpp
#include #include #include #include #include #import "C:\Program Files\Common Files\Microsoft Shared\OFFICE16\MSO.DLL" no_namespace #import "C:\Program Files\Common Files\Microsoft Shared\VSTO\PIA\Office15\Microsoft.Office.Interop.Excel.dll" no_namespace using namespace std; struct ExcelData { // Define your structure to hold Excel data here // For example, if each row has multiple columns, use appropriate data types int column1; double column2; string column3; // Add more members as needed }; int main() { // Initialize COM CoInitialize(NULL); // Create Excel application object _ApplicationPtr pExcelApp; pExcelApp.CreateInstance(L"Excel.Application"); // Make Excel visible (optional) pExcelApp->Visible = VARIANT_TRUE; // Open the Excel workbook _WorkbookPtr pWorkbook = pExcelApp->Workbooks->Open(L"Path_to_your_Excel_file"); // Access the active worksheet _WorksheetPtr pWorksheet = pWorkbook->ActiveSheet; // Read the first 20 lines (assuming data starts from A1) for (int i = 1; i <= 20; ++i) { _bstr_t cellValue = pWorksheet->Cells[i][1]->Value; // Store the data as needed (you may choose not to use it) } // Read the next 100 lines and columns into a structure vector excelData; for (int i = 21; i <= 120; ++i) { ExcelData data; data.column1 = pWorksheet->Cells[i][1]->Value; data.column2 = pWorksheet->Cells[i][2]->Value; data.column3 = static_cast<_bstr_t>(pWorksheet->Cells[i][3]->Value); // Add more assignments for additional columns excelData.push_back(data); } // Close Excel pWorkbook->Close(VARIANT_TRUE); pExcelApp->Quit(); // Uninitialize COM CoUninitialize(); // Now, you can use the 'excelData' vector for calculations, sorting, searching, etc. return 0; }

يرجى تغيير “Path_to_your_Excel_file” إلى المسار الكامل لملف Excel الذي تريد قراءته. كما يُفضل أن تكون مسارات الملفات بالنسبة لك نسبية لتجنب مشاكل الطرق المطلقة.

تأكد من تضمين مكتبات التصفيح الصحيحة في مشروعك وتعديل الهيكلية لتناسب بياناتك الخاصة في الهيكل ExcelData.

هذا الشيفرة يستخدم أوامر COM للتفاعل مع Excel، لذا يجب تأكيد توفر المكتبات والملفات اللازمة على جهاز الكمبيوتر الخاص بك.

المزيد من المعلومات

فيما يلي توضيحات إضافية حول الشيفرة المقدمة وبعض المعلومات التي قد تكون مفيدة:

  1. بيانات ExcelData:

    • قم بتعريف هيكل (struct) ExcelData بما يتناسب مع بيانات الأعمدة في ملف Excel الخاص بك. الشيفرة المقدمة توفر مثالاً بسيطًا مع ثلاثة أعمدة (int، double، string)، ولكن يمكنك ضبطها وفقًا لاحتياجاتك الفعلية.
  2. استخدام مكتبات COM:

    • يتم استخدام COM (Component Object Model) للتفاعل مع تطبيق Excel. يجب التأكد من تضمين مكتبات COM الصحيحة في مشروعك. الشيفرة تستخدم _ApplicationPtr و _WorkbookPtr و _WorksheetPtr الذين يتم إنشاؤهم باستخدام COM.
  3. إعدادات Excel:

    • تم تعيين Visible إلى VARIANT_TRUE لجعل Excel مرئيًا. يمكنك تعيينه إلى VARIANT_FALSE إذا كنت لا ترغب في عرض واجهة Excel أثناء تنفيذ البرنامج.
    • الشيفرة تفترض أن البيانات تبدأ في الخلية A1. يمكنك تعديل الفهرس (index) حسب احتياجات ملف Excel الخاص بك.
  4. التعامل مع COM:

    • يتعين عليك إغلاق Excel بعد الانتهاء من استخدامه باستخدام Quit() لضمان تحرير الموارد بشكل صحيح. يمكنك أيضًا استخدام Release() لتحرير موارد COM بشكل يدوي.
  5. رموز الإعادة:

    • استخدمت _bstr_t لتحويل قيم الخلية إلى نص. يجب التحقق من استخدام النوع الصحيح لكل خلية حسب نوع البيانات في Excel.
  6. تحسينات إضافية:

    • يمكنك تعزيز الشيفرة بإضافة فحص للأخطاء والتحقق من نجاح كل خطوة.
    • يمكنك تعزيز أداء البرنامج عن طريق قراءة البيانات في دفعات (chunks) إذا كانت الكمية كبيرة.

تذكر أن تكون حذرًا عند التعامل مع مكتبات COM وتأكد من تحرير الموارد بشكل صحيح لتجنب تسريب الذاكرة. تحقق من وجود مكتبات COM الصحيحة وملفات Excel على الجهاز الذي تقوم بتشغيل البرنامج عليه.

زر الذهاب إلى الأعلى