مقارنة أوراق عمل Excel برمجيًا هي متطلب شائع عندما تحتاج إلى اكتشاف تغييرات البيانات، تدقيق الإصدارات، أو إنشاء تقارير. GroupDocs.Comparison Cloud SDK for .NET يوفر مكتبة قوية تعتمد على REST تجعل من السهل مقارنة ملفات Excel عبر REST في C#. هذا الدليل يشرح لك كيفية تحميل الملفات، تكوين خيارات المقارنة، تنفيذ المقارنة، واسترجاع النتيجة، مع أمثلة كود C# وcURL.

مقارنة ملفات Excel عبر REST في C# في 5 خطوات

  1. تحميل ملف المصدر XLSX: استخدم طريقة StorageApi.UploadFile لوضع sample1.xlsx في التخزين السحابي.
using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
{
    var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
    storageApi.UploadFile(uploadRequest1);
}
  1. تحميل ملف XLSX الهدف: كرّر عملية التحميل لـ sample2.xlsx.
using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
{
    var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
    storageApi.UploadFile(uploadRequest2);
}
  1. تكوين خيارات المقارنة: أنشئ كائن CompareOptions، عيّن مسارات ملفات المصدر والهدف، حدد مسار الإخراج، واضبط الإعدادات مثل GenerateSummaryPage.
var compareOptions = new CompareOptions
{
    SourceFile = new FileInfo { FilePath = remoteFilePath1 },
    TargetFiles = new List<FileInfo>
    {
        new FileInfo { FilePath = remoteFilePath2 }
    },
    OutputPath = remoteResultPath,
    Settings = new Settings
    {
        GenerateSummaryPage = true,
        ShowDeletedContent = true,
        ShowInsertedContent = true
    }
};

انظر مرجع API الكامل لـ CompareOptions و Settings في مرجع API.
4. تنفيذ المقارنة: استدعِ CompareApi.CompareDocument مع CompareDocumentRequest.

var compareRequest = new CompareDocumentRequest(compareOptions);
var compareResult = compareApi.CompareDocument(compareRequest);
  1. تنزيل النتيجة وتنظيف الموارد: استرجع ملف result.xlsx المُولد، احفظه محليًا، واحذف الملفات البعيدة إذا رغبت.
var downloadRequest = new DownloadFileRequest(compareResult.Path);
using (var resultStream = storageApi.DownloadFile(downloadRequest))
using (var fileStream = new FileStream(localResultPath, FileMode.Create, FileAccess.Write))
{
    resultStream.CopyTo(fileStream);
}

// Clean up
storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath1));
storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath2));
storageApi.DeleteFile(new DeleteFileRequest(remoteResultPath));

مثال كامل للكود: مقارنة ملفات Excel عبر REST في C# باستخدام GroupDocs.Comparison

يوضح هذا المثال كيفية تحميل ملفين XLSX، مقارنتهما، وتنزيل النتيجة المميزة.

using System;
using System.Collections.Generic;
using System.IO;
using GroupDocs.Comparison.Cloud.Sdk.Api;
using GroupDocs.Comparison.Cloud.Sdk.Client;
using GroupDocs.Comparison.Cloud.Sdk.Model;
using GroupDocs.Comparison.Cloud.Sdk.Model.Requests;

namespace CompareExcelFilesExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Configuration – replace with your actual credentials
            var config = new Configuration
            {
                ClientId = "YOUR_CLIENT_ID",
                ClientSecret = "YOUR_CLIENT_SECRET"
            };

// APIs
            var compareApi = new CompareApi(config);
            var storageApi = new StorageApi(config);

// Local and remote file names
            string localFilePath1 = "sample1.xlsx";
            string localFilePath2 = "sample2.xlsx";
            string remoteFilePath1 = "sample1.xlsx";
            string remoteFilePath2 = "sample2.xlsx";
            string remoteResultPath = "result.xlsx";
            string localResultPath = "result.xlsx";

// Upload first Excel file
            using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
            {
                var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
                storageApi.UploadFile(uploadRequest1);
            }

// Upload second Excel file
            using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
            {
                var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
                storageApi.UploadFile(uploadRequest2);
            }

// Prepare comparison options
            var compareOptions = new CompareOptions
            {
                SourceFile = new FileInfo { FilePath = remoteFilePath1 },
                TargetFiles = new List<FileInfo>
                {
                    new FileInfo { FilePath = remoteFilePath2 }
                },
                OutputPath = remoteResultPath,
                Settings = new Settings
                {
                    // Example: show changes in a new sheet
                    GenerateSummaryPage = true,
                    ShowDeletedContent = true,
                    ShowInsertedContent = true
                }
            };

// Execute comparison
            var compareRequest = new CompareDocumentRequest(compareOptions);
            var compareResult = compareApi.CompareDocument(compareRequest);

// Download the result file
            var downloadRequest = new DownloadFileRequest(compareResult.Path);
            using (var resultStream = storageApi.DownloadFile(downloadRequest))
            using (var fileStream = new FileStream(localResultPath, FileMode.Create, FileAccess.Write))
            {
                resultStream.CopyTo(fileStream);
            }

// Optional: clean up remote files
            storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath1));
            storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath2));
            storageApi.DeleteFile(new DeleteFileRequest(remoteResultPath));

Console.WriteLine("Comparison completed. Result saved to " + localResultPath);
        }
    }
}

ملاحظة: يوضح مثال الشيفرة هذا الوظيفة الأساسية. قبل استخدامه في مشروعك، تأكد من تحديث أي مسارات ملفات وقيم التكوين لتطابق بيئتك الفعلية، وتحقق من أن جميع الاعتمادات المطلوبة مثبتة بشكل صحيح، واختبر بدقة في بيئة التطوير الخاصة بك. إذا واجهت أي مشكلات، يرجى الرجوع إلى الوثائق الرسمية أو التواصل مع فريق الدعم للحصول على المساعدة.

استدعاء Comparison REST API باستخدام cURL

فيما يلي سير عمل cURL يقوم بنفس العملية دون كتابة كود C#. استبدل القيم النائبة ببيانات الاعتماد الفعلية وأسماء الملفات الخاصة بك.

  1. الحصول على رمز وصول

    curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
         -H "Content-Type: application/json" \
         -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'
    
  2. رفع ملف XLSX المصدر

    curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/sample1.xlsx" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -H "Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" \
         --data-binary "@sample1.xlsx"
    
  3. رفع ملف XLSX الهدف

    curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/sample2.xlsx" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -H "Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" \
         --data-binary "@sample2.xlsx"
    
  4. تشغيل المقارنة

    curl -X POST "https://api.groupdocs.cloud/v2.0/comparison/compare" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
               "source_file": {"file_path": "sample1.xlsx"},
               "target_files": [{"file_path": "sample2.xlsx"}],
               "output_path": "result.xlsx",
               "settings": {
                   "generate_summary_page": true,
                   "show_deleted_content": true,
                   "show_inserted_content": true
               }
             }'
    
  5. تنزيل النتيجة

    curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/result.xlsx" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -o result.xlsx
    

للحصول على قائمة كاملة بنقاط النهاية والمعلمات، راجع الوثائق الرسمية لواجهة برمجة التطبيقات.

المتطلبات الأولية والإعداد

  1. قم بتثبيت حزمة .NET عبر NuGet:
dotnet add package GroupDocs.Comparison-Cloud
  1. تأكد من أن لديك حساب GroupDocs Cloud صالح واحصل على معرف العميل و سر العميل من لوحة التحكم.
  2. يلزم .NET 6.0 أو أحدث.

يمكنك تنزيل أحدث مكتبة من صفحة التنزيل.

ضبط إعدادات المقارنة بدقة

يتيح لك كائن Settings داخل CompareOptions التحكم في المخرجات. تشمل التعديلات الشائعة:

  • GenerateSummaryPage - يضيف ورقة ملخص مع إحصائيات التغييرات.
  • ShowDeletedContent - يبرز الخلايا التي تم حذفها.
  • ShowInsertedContent - يبرز الخلايا التي تمت إضافتها حديثًا.

تم بالفعل استخدام هذه الخصائص في مثال الشيفرة أعلاه. للحصول على خيارات إضافية مثل حماية Password أو StyleChangeDetection، يرجى الرجوع إلى مرجع API.

الخلاصة

مقارنة ملفات Excel عبر REST في C# تصبح سهلة مع GroupDocs.Comparison Cloud SDK for .NET. باتباع الخطوات، يمكنك تحميل ملفات XLSX، وتكوين إعدادات مقارنة مفصلة، وتنفيذ المقارنة، واسترجاع مصنف النتائج الذي يوضح الفروقات بوضوح. تذكر تأمين بيانات اعتماد API الخاصة بك، واحترام حدود حجم الملفات، واستخدام ترخيص مؤقت للتطوير. عندما تكون جاهزًا للإنتاج، اشترِ ترخيصًا كاملًا من صفحة التسعير لفتح الاستخدام غير المحدود.

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

  • كيف أقارن ملفات Excel عبر REST باستخدام C# و GroupDocs.Comparison؟
    استخدم SDK لتحميل ملفين XLSX، اضبط CompareOptions، استدعِ CompareDocument، وحمّل الملف الناتج. يتم توضيح سير العمل الكامل في أقسام الكود وcURL أعلاه.

  • ما طريقة المصادقة التي يتطلبها REST API؟
    يستخدم API بروتوكول OAuth 2.0 مع معرف العميل (client‑id) وسر العميل (client‑secret) للحصول على رمز وصول، ويجب إرساله في رأس Authorization: Bearer لكل طلب.

  • هل يمكنني تخصيص التغييرات التي يتم تمييزها في نتيجة المقارنة؟
    نعم. قم بضبط كائن Settings (على سبيل المثال، GenerateSummaryPage، ShowDeletedContent، ShowInsertedContent) للتحكم في مظهر الاختلافات.

  • هل الترخيص المؤقت كافٍ للاختبار؟
    ترخيص مؤقت من صفحة الترخيص المؤقت يعمل للتطوير والاختبار. بالنسبة للنشر في بيئة الإنتاج، احصل على ترخيص كامل.

اقرأ المزيد