مقارنة أوراق عمل Excel برمجيًا هي متطلب شائع عندما تحتاج إلى اكتشاف تغييرات البيانات، تدقيق الإصدارات، أو إنشاء تقارير. GroupDocs.Comparison Cloud SDK for .NET يوفر مكتبة قوية تعتمد على REST تجعل من السهل مقارنة ملفات Excel عبر REST في C#. هذا الدليل يشرح لك كيفية تحميل الملفات، تكوين خيارات المقارنة، تنفيذ المقارنة، واسترجاع النتيجة، مع أمثلة كود C# وcURL.
مقارنة ملفات Excel عبر REST في C# في 5 خطوات
- تحميل ملف المصدر XLSX: استخدم طريقة
StorageApi.UploadFileلوضعsample1.xlsxفي التخزين السحابي.
using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
{
var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
storageApi.UploadFile(uploadRequest1);
}
- تحميل ملف XLSX الهدف: كرّر عملية التحميل لـ
sample2.xlsx.
using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
{
var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
storageApi.UploadFile(uploadRequest2);
}
- تكوين خيارات المقارنة: أنشئ كائن
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);
- تنزيل النتيجة وتنظيف الموارد: استرجع ملف
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#. استبدل القيم النائبة ببيانات الاعتماد الفعلية وأسماء الملفات الخاصة بك.
الحصول على رمز وصول
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"}'رفع ملف 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"رفع ملف 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"تشغيل المقارنة
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 } }'تنزيل النتيجة
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/result.xlsx" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -o result.xlsx
للحصول على قائمة كاملة بنقاط النهاية والمعلمات، راجع الوثائق الرسمية لواجهة برمجة التطبيقات.
المتطلبات الأولية والإعداد
- قم بتثبيت حزمة .NET عبر NuGet:
dotnet add package GroupDocs.Comparison-Cloud
- تأكد من أن لديك حساب GroupDocs Cloud صالح واحصل على معرف العميل و سر العميل من لوحة التحكم.
- يلزم .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) للتحكم في مظهر الاختلافات.هل الترخيص المؤقت كافٍ للاختبار؟
ترخيص مؤقت من صفحة الترخيص المؤقت يعمل للتطوير والاختبار. بالنسبة للنشر في بيئة الإنتاج، احصل على ترخيص كامل.
