كيفية مقارنة ملفات XLSX في C# باستخدام التدفقات – دليل كامل

مقارنة جداول Excel يدويًا مرهقة وعرضة للأخطاء، خاصةً عندما تحتاج إلى التحقق من تقارير مالية ضخمة أو تدقيق مجموعات البيانات. في هذا البرنامج التعليمي ستكتشف كيفية مقارنة xlsx بفعالية باستخدام GroupDocs.Comparison لـ .NET عبر معالجة تعتمد على التدفقات. سنستعرض كل خطوة، نشرح لماذا التدفقات مهمة، ونقدم لك نصائح عملية يمكنك نسخها إلى مشاريعك.

إجابات سريعة

  • ما المكتبة التي تتعامل مع مقارنة Excel؟ GroupDocs.Comparison for .NET.
  • هل يمكنني مقارنة الملفات دون حفظها على القرص؟ نعم—استخدم التدفقات للعمل مباشرةً مع البيانات في الذاكرة.
  • هل يلزم وجود ترخيص للإنتاج؟ الترخيص التجاري إلزامي؛ تتوفر نسخة تجريبية مجانية.
  • ما إصدارات .NET المدعومة؟ .NET Framework 4.5+, .NET Core 3.1+, .NET 5/6/7.
  • كم عدد صيغ Excel التي يتم تغطيتها؟ أكثر من 20، بما في ذلك .xls، .xlsx، .xlsm، و .csv.

ما هو “كيفية مقارنة xlsx”؟

“كيفية مقارنة xlsx” تشير إلى الكشف برمجيًا عن الفروقات بين ملفي Excel workbook. يقرأ GroupDocs.Comparison لـ .NET كل دفتر عمل، يقيم التغييرات على مستوى الخلايا، وينتج مستند نتيجة مميز يوضح الإضافات والحذف والتعديلات. يبرز المقارنة الخلايا والصفوف والأوراق المتغيرة، مما يجعل مراجعة الفروقات سريعة وسهلة.

لماذا نستخدم المقارنة المعتمدة على التدفقات؟

معالجة التدفق تقلل من ضغط الذاكرة عن طريق قراءة الملفات على شكل قطع بدلاً من تحميل دفتر العمل بالكامل إلى الذاكرة. يمكن لـ GroupDocs.Comparison التعامل مع أكثر من 50 صيغة إدخال وإخراج ومعالجة جداول متعددة المئات من الصفحات مع الحفاظ على استهلاك الذاكرة القصوى أقل من 100 ميغابايت على عتاد الخادم المعتاد. يجعل ذلك منه مثاليًا لخدمات الويب، الخدمات الدقيقة، ووظائف الدُفعات داخل المؤسسة.

المتطلبات المسبقة

  1. GroupDocs.Comparison for .NET – تحميل من الموقع الرسمي هنا.
  2. بيئة تطوير C# – Visual Studio 2022 أو أي بيئة تطوير تدعم .NET 6+.
  3. ملفات Excel – دفتران .xlsx تريد مقارنتهما.
  4. فهم أساسي للتدفقات – تُستخدم مفاهيم System.IO.Stream طوال المثال.

استيراد المساحات الاسمية

المساحات الاسمية التالية تمنحك الوصول إلى محرك المقارنة وأدوات التدفق.

مساحة الاسم GroupDocs.Comparison تحتوي على الفئات الأساسية للمقارنة، بينما System.IO توفر الأنواع FileStream و MemoryStream اللازمة للتعامل مع التدفقات.

دليل التنفيذ خطوة بخطوة

كيف يؤثر استخدام التدفقات على الأداء؟

حمّل كل دفتر عمل باستخدام File.OpenRead() ومرّر التدفق الناتج مباشرةً إلى المقارن. يتجنب هذا الأسلوب الملفات المؤقتة، يقلل زمن الإدخال/الإخراج حتى 30 % على تخزين SSD، ويحافظ على العملية بالكامل في الذاكرة، وهو أمر حاسم لواجهات برمجة التطبيقات الويب ذات الإنتاجية العالية.

الخطوة 1: تهيئة متغيرات الإخراج

حدد مكان تخزين نتيجة المقارنة. يضمن استخدام Path.Combine() الفاصل الصحيح للمجلدات على Windows أو Linux أو macOS.

نصيحة احترافية: في بيئة الإنتاج، احفظ الإخراج في مجلد مؤقت أو دلو تخزين سحابي للحفاظ على نظافة دليل التطبيق.

الخطوة 2: إنشاء كائن المقارن

فئة Comparer هي المكوّن المركزي الذي يدير مقارنة مستندين أو أكثر.

أنشئ مثالًا من Comparer بفتح دفتر العمل المصدر باستخدام File.OpenRead(). يضمن بيان using إغلاق تدفق الملف تلقائيًا، مما يمنع تسرب مقبض الملف.

الخطوة 3: إضافة المستند الهدف

أضف دفتر العمل الثاني إلى المقارن. يمكنك ربط أهداف إضافية إذا كنت بحاجة لمقارنة ملف رئيسي مع عدة متغيّرات—مفيد لتقارير إقليمية أو سيناريوهات التحكم بالإصدارات.

الخطوة 4: تنفيذ المقارنة

استدعِ طريقة Compare لإنشاء مستند الفروقات. تُكتب النتيجة إلى تدفق جديد تم إنشاؤه باستخدام File.Create(). يبرز ملف الإخراج جميع الخلايا والصفوف والأوراق المتغيّرة، مما يجعل المراجعة البصرية بسيطة.

طريقة Compare تنفّذ المقارنة وتعيد مستند النتيجة كـ stream.

الخطوة 5: عرض رسالة النجاح

بعد انتهاء المقارنة، سجّل رسالة نجاح مختصرة تتضمن مسار الإخراج. في واجهة برمجة تطبيقات حقيقية، ستعيد التدفق إلى المستدعي أو تخزّنه في التخزين السحابي للاسترجاع لاحقًا.

المشكلات الشائعة واستكشاف الأخطاء

  • أخطاء الملف قيد الاستخدام: تأكد من عدم وجود عملية أخرى (بما في ذلك Excel) تفتح الملف. التدفقات المفتوحة بـ File.OpenRead() تحصل على قفل مشاركة للقراءة فقط، مما يقلل معظم النزاعات.
  • ارتفاع الذاكرة مع الملفات الضخمة: للدفاتر التي تتجاوز 100 ميغابايت، فعّل علم ComparerOptionsEnableMemoryOptimization (إن كان متاحًا) وتابع الذاكرة الخاصة بالعملية.
  • مقارنات صيغ مختلطة: يدعم GroupDocs.Comparison أزواج صيغ متسقة؛ تجنّب مقارنة ملف .xls مع ملف .xlsx في نفس العملية لتفادي عدم توافق التخطيط.
  • موضع التدفق: عند إعادة استخدام تدفق، أعد ضبطه دائمًا باستخدام stream.Seek(0, SeekOrigin.Begin) قبل تمريره إلى المقارن.

معالجة أخطاء قوية: التقط ComparisonException للدفاتر التالفة وسجّل اسم الملف للتحقق لاحقًا.
ComparisonException تُرمى من قبل GroupDocs.Comparison عندما يكون المستند المدخل تالفًا أو يستخدم صيغة غير مدعومة.

الأداء وأفضل الممارسات

  • تخلص من التدفقات فورًا: غلف كل FileStream بكتلة using.
  • معالجة دفعات: استخدم Parallel.ForEach مع المقارنات غير المتزامنة لمعالجة عدة أزواج ملفات بشكل متزامن، لكن حدّ درجة التوازي لتجنب استنزاف المعالج.
  • معالجة أخطاء قوية: التقط ComparisonException للدفاتر التالفة وسجّل اسم الملف للتحقق لاحقًا.
  • تحقق من صحة تدفقات الإدخال: تحقق من نوع MIME أو رأس الملف قبل المقارنة لرفض التحميلات غير Excel مبكرًا.

ComparerOptions توفر إعدادات التكوين لعملية المقارنة، مثل تحسين الذاكرة وضبط الحساسية.

سيناريوهات الاستخدام المتقدمة

  • مقارنة BLOB من قاعدة البيانات: استخرج BLOB Excel من SQL Server، غلفه بـ MemoryStream، ومرره مباشرةً إلى المقارن—دون الحاجة لملفات مؤقتة.
  • دمج التخزين السحابي: استخدم Azure Blob Storage SDK للحصول على BlobStream ومرره إلى المقارن، مما يتيح سير عمل خالي تمامًا من الخوادم.
  • نقطة نهاية API في الوقت الحقيقي: قدم نقطة نهاية POST تقبل ملفين multipart/form‑data، تقارنهم مباشرةً، وتعيد الفروقات كـ stream قابل للتحميل.

الخلاصة

من خلال الاستفادة من API المقارنة المعتمد على التدفقات في GroupDocs.Comparison، تحصل على طريقة فعّالة في الذاكرة، آمنة، وقابلة للتوسع لمقارنة ملفات XLSX في C#. يغطي هذا الدليل كل شيء من الإعداد إلى سيناريوهات السحابة المتقدمة، مما يمنحك أساسًا قويًا لدمج مقارنة جداول البيانات في أي حل .NET.

الأسئلة المتكررة

س: هل GroupDocs.Comparison لـ .NET متوافق مع جميع صيغ Excel؟
ج: نعم، يدعم أكثر من 20 صيغة متعلقة بـ Excel، بما في ذلك .xls، .xlsx، .xlsm، و .csv، مما يضمن توافقًا واسعًا عبر دفاتر العمل القديمة والحديثة.

س: هل يمكنني تخصيص النمط البصري لنتيجة المقارنة؟
ج: بالتأكيد. يتيح لك الـ API ضبط ألوان التمييز، تغيير نمط الحدود، وتعديل مستوى حساسية التغيّر عبر ComparisonOptions.

س: هل أحتاج إلى ترخيص تجاري للاستخدام في الإنتاج؟
ج: يلزم وجود ترخيص GroupDocs.Comparison صالح لأي نشر تجاري. يمكنك الحصول عليه هنا.

س: هل تتوفر نسخة تجريبية مجانية؟
ج: نعم، يمكنك تحميل نسخة تجريبية كاملة الوظائف هنا لتقييم جميع الميزات قبل الشراء.

س: أين يمكنني الحصول على دعم المجتمع؟
ج: منتدى GroupDocs.Comparison هنا هو مكان نشط لطرح الأسئلة ومشاركة الحلول مع مطورين آخرين.


آخر تحديث: 2026-06-21
تم الاختبار مع: GroupDocs.Comparison 23.10 for .NET
المؤلف: GroupDocs

using System;
using System.IO;
string outputDirectory = "Your Document Directory";
string outputFileName = Path.Combine(outputDirectory, "result.xlsx");
using (Comparer comparer = new Comparer(File.OpenRead("source.xlsx")))
comparer.Add(File.OpenRead("target.xlsx"));
comparer.Compare(File.Create(outputFileName));
Console.WriteLine($"\nDocuments compared successfully.\nCheck output in {outputDirectory}.");

دروس ذات صلة