مقایسهٔ کاربرگ‌های 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 Reference مراجعه کنید.
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);
        }
    }
}

توجه: این مثال کد عملکرد اصلی را نشان می‌دهد. قبل از استفاده از آن در پروژه خود، اطمینان حاصل کنید که مسیرهای فایل و مقادیر پیکربندی را به‌گونه‌ای به‌روزرسانی کنید که با محیط واقعی شما مطابقت داشته باشد، بررسی کنید که تمام وابستگی‌های مورد نیاز به‌درستی نصب شده‌اند و به‌طور کامل در محیط توسعه خود تست کنید. اگر با مشکلی مواجه شدید، لطفاً به مستندات رسمی مراجعه کنید یا برای دریافت کمک با تیم پشتیبانی تماس بگیرید.

فراخوانی 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
    

برای دریافت فهرست کامل نقاط انتهایی و پارامترها، به مستندات رسمی API مراجعه کنید.

پیش‌نیازها و تنظیمات

  1. بسته .NET را از طریق NuGet نصب کنید:
dotnet add package GroupDocs.Comparison-Cloud
  1. اطمینان حاصل کنید که یک حساب کاربری معتبر GroupDocs Cloud دارید و Client Id و Client Secret خود را از داشبورد دریافت کنید.
  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 بالا نشان داده شده است.

  • روش احراز هویت مورد نیاز API REST چیست؟
    API از OAuth 2.0 به همراه client‑id و client‑secret شما برای دریافت یک توکن دسترسی استفاده می‌کند که باید در هدر Authorization: Bearer برای هر درخواست ارسال شود.

  • آیا می‌توانم سفارشی‌سازی کنم که کدام تغییرات در نتیجه مقایسه برجسته شوند؟
    بله. شی Settings را تنظیم کنید (مثلاً GenerateSummaryPage، ShowDeletedContent، ShowInsertedContent) تا ظاهر تفاوت‌ها را کنترل کنید.

  • آیا یک لایسنس موقت برای تست کافی است؟
    یک لایسنس موقت از صفحه لایسنس موقت برای توسعه و تست کار می‌کند. برای استقرارهای تولیدی، یک لایسنس کامل تهیه کنید.

بیشتر بخوانید