Порівняння листів 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"}'
  1. Завантажити вихідний файл 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"
  1. Завантажити цільовий файл 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"
  1. Запустити порівняння
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
           }
         }'
  1. Завантажити результат
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‑облікових даних, дотримання обмежень розміру файлів і використання тимчасової ліцензії під час розробки. Коли ви будете готові до продакшн‑режиму, придбайте повну ліцензію на сторінці цін, щоб розблокувати необмежене використання.

FAQ

  • Як порівняти файли 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), щоб контролювати вигляд відмінностей.

  • Чи достатня тимчасова ліцензія для тестування?
    Тимчасова ліцензія зі сторінки тимчасової ліцензії підходить для розробки та тестування. Для продакшн‑розгортань необхідно отримати повну ліцензію.

Читати далі