Аналіз змін між версіями електронних таблиць є рутинним завданням для фінансів, звітності та процесів перевірки даних. GroupDocs.Comparison Cloud SDK for .NET надає потужний API, який спрощує порівняння файлів Excel у .NET без ручної перевірки. У цьому посібнику ви дізнаєтеся, як налаштувати бібліотеку, завантажити робочі книги, викликати REST‑endpoint з C#, отримати детальну інформацію про зміни та точно налаштувати параметри порівняння для отримання точних результатів.

Перш ніж почати: вимоги та встановлення

Перш ніж розпочати, переконайтеся, що у вас є наступне:

  • .NET 6.0 або новіша версія встановлена.
  • IDE, наприклад Visual Studio 2022.
  • Обліковий запис GroupDocs Cloud з ClientId та ClientSecret.
  • Доступ до сховища GroupDocs Cloud, куди будуть завантажені файли Excel.

Встановіть SDK через NuGet:

dotnet add package GroupDocs.Comparison-Cloud

Завантажте останній пакет зі сторінки випуску. Після встановлення додайте ваші облікові дані у коді, як показано далі. Тепер ви готові розпочати процес порівняння.

Покроковий посібник з порівняння Excel‑файлів у .NET

Наступні кроки ілюструють, як порівняти файли Excel у .NET за допомогою SDK.

Крок 1: Завантажте вихідний та цільовий документи

Створіть об’єкт конфігурації з вашими обліковими даними та створіть екземпляр CompareApi.

var config = new Configuration
{
    ClientId = "YOUR_CLIENT_ID",
    ClientSecret = "YOUR_CLIENT_SECRET"
};

var compareApi = new CompareApi(config);

Крок 2: Підготуйте Excel книги

Визначте об’єкти FileInfo, які вказують на вихідні та цільові файли XLSX у сховищі GroupDocs Cloud.

var sourceFile = new FileInfo { FilePath = "input/source.xlsx" };
var targetFile = new FileInfo { FilePath = "input/target.xlsx" };

Крок 3: Встановити параметри та налаштування порівняння

Налаштуйте об’єкт CompareOptions, включаючи детальні налаштування змін.

var compareOptions = new CompareOptions
{
    SourceFile = sourceFile,
    TargetFiles = new List<FileInfo> { targetFile },
    OutputPath = "output/diff_result.xlsx",
    Settings = new Settings
    {
        ShowDeletedContent = true,
        ShowInsertedContent = true,
        ShowStyleChanges = true,
        GenerateSummaryPage = true
    }
};

Для повного списку налаштувань зверніться до довідка API.

Крок 4: Виконати порівняння та обробити результати

Викличте метод Compare і прочитайте базову інформацію про результат.

var compareResult = compareApi.Compare(compareOptions);
Console.WriteLine($"Comparison completed. Result file: {compareResult.Path}");
Console.WriteLine($"Number of changes detected: {compareResult.Changes?.Count ?? 0}");

Крок 5: Отримати докладну інформацію про зміни

Якщо вам потрібен детальний звіт, використовуйте запит GetChanges.

var changesRequest = new GetChangesRequest
{
    SourceFile = sourceFile,
    TargetFile = targetFile,
    OutputPath = "output/detailed_changes.json"
};
var detailedChanges = compareApi.GetChanges(changesRequest);
Console.WriteLine($"Detailed changes saved to: {detailedChanges.Path}");

За допомогою цих кроків ви повністю автоматизували процес порівняння Excel‑файлів у .NET.

Порівняння Excel файлів програмно - Повний приклад коду

Наступний код демонструє повний процес роботи від налаштування до обробки результату.

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

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

// Initialize Compare API
            var compareApi = new CompareApi(config);

// Prepare source and target Excel files (must be uploaded to GroupDocs Cloud storage beforehand)
            var sourceFile = new FileInfo { FilePath = "input/source.xlsx" };
            var targetFile = new FileInfo { FilePath = "input/target.xlsx" };

// Define comparison options
            var compareOptions = new CompareOptions
            {
                SourceFile = sourceFile,
                TargetFiles = new List<FileInfo> { targetFile },
                OutputPath = "output/diff_result.xlsx",
                // Optional: specify that we want detailed changes for worksheets
                Settings = new Settings
                {
                    ShowDeletedContent = true,
                    ShowInsertedContent = true,
                    ShowStyleChanges = true,
                    GenerateSummaryPage = true
                }
            };

try
            {
                // Call the Compare API
                var compareResult = compareApi.Compare(compareOptions);

// Output basic result information
                Console.WriteLine($"Comparison completed. Result file: {compareResult.Path}");
                Console.WriteLine($"Number of changes detected: {compareResult.Changes?.Count ?? 0}");

// Iterate through change details
                if (compareResult.Changes != null)
                {
                    foreach (var change in compareResult.Changes)
                    {
                        Console.WriteLine("--------------------------------------------------");
                        Console.WriteLine($"Change Type   : {change.ChangeType}");
                        Console.WriteLine($"Worksheet     : {change.Worksheet}");
                        Console.WriteLine($"Cell Address  : {change.CellAddress}");
                        Console.WriteLine($"Old Value     : {change.OldValue}");
                        Console.WriteLine($"New Value     : {change.NewValue}");
                        Console.WriteLine($"Is New Row    : {change.IsNewRow}");
                        Console.WriteLine($"Is New Column : {change.IsNewColumn}");
                    }
                }

// Retrieve detailed changes via GetChanges (optional)
                var changesRequest = new GetChangesRequest
                {
                    SourceFile = sourceFile,
                    TargetFile = targetFile,
                    OutputPath = "output/detailed_changes.json"
                };
                var detailedChanges = compareApi.GetChanges(changesRequest);
                Console.WriteLine($"Detailed changes saved to: {detailedChanges.Path}");
            }
            catch (ApiException apiEx)
            {
                Console.WriteLine($"API error: {apiEx.ErrorCode} - {apiEx.Message}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Unexpected error: {ex.Message}");
            }
        }
    }
}

Примітка: Цей приклад коду демонструє основну функціональність. Перш ніж використовувати його у вашому проєкті, переконайтеся, що оновили всі шляхи до файлів та значення конфігурації відповідно до вашого реального середовища, перевірте, що всі необхідні залежності встановлені правильно, і ретельно протестуйте у вашому середовищі розробки. Якщо ви зіткнетеся з будь-якими проблемами, будь ласка, зверніться до офіційної документації або зв’яжіться з командою підтримки для отримання допомоги.

Виконайте порівняння Excel за допомогою REST з cURL

Ви можете досягти того ж результату, не пишучи код C#, викликавши REST API безпосередньо.

1. Аутентифікація та отримання токену доступу

curl -X POST "https://api.groupdocs.cloud/v1.0/oauth2/token" \
     -H "Content-Type: application/json" \
     -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'

2. Завантажте вихідну книгу

curl -X PUT "https://api.groupdocs.cloud/v1.0/storage/file?path=input/source.xlsx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -T "./source.xlsx"

3. Завантажте цільову книгу

curl -X PUT "https://api.groupdocs.cloud/v1.0/storage/file?path=input/target.xlsx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -T "./target.xlsx"

4. Виконати порівняння

curl -X POST "https://api.groupdocs.cloud/v1.0/comparison/compare" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "source_file": {"file_path":"input/source.xlsx"},
           "target_files": [{"file_path":"input/target.xlsx"}],
           "output_path":"output/diff_result.xlsx",
           "settings": {
               "show_deleted_content": true,
               "show_inserted_content": true,
               "show_style_changes": true,
               "generate_summary_page": true
           }
         }'

5. Завантажте отриману робочу книгу diff

curl -X GET "https://api.groupdocs.cloud/v1.0/storage/file?path=output/diff_result.xlsx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o diff_result.xlsx

Для повного списку параметрів перегляньте офіційну документацію API.

Висновок

Використовуючи GroupDocs.Comparison Cloud SDK for .NET, ви можете легко порівнювати Excel‑файли у .NET та отримувати детальну diff‑книгу, яка підсвічує кожну зміну. REST‑орієнтована архітектура SDK дозволяє інтегрувати порівняння електронних таблиць у будь‑який C# сервіс, веб‑API або фонове завдання з мінімальними зусиллями. Не забудьте отримати належну ліцензію для використання у продакшн‑режимі; тимчасова ліцензія доступна на сторінці ліцензування, а повна інформація про ліцензування розміщена на сайті продукту. Почніть автоматизувати ваші процеси порівняння Excel вже сьогодні та усуньте помилки ручної перевірки.

Питання та відповіді

  • Як я можу порівняти Excel файли в .NET без написання великої кількості коду?
    SDK абстрагує складну роботу. Вам потрібно лише налаштувати облікові дані, вказати два файли XLSX і викликати compareApi.Compare. Бібліотека повертає файл diff і список об’єктів змін.

  • Який формат використовується для результату diff?
    За замовчуванням результат зберігається у вигляді книги XLSX, зберігаючи оригінальне розташування та додаючи візуальні маркери для видалень, вставок і змін стилю.

  • Чи можливо порівнювати захищені робочі книги Excel?
    Так. Вкажіть пароль у властивості Password об’єкта FileInfo. API розблокує робочу книгу перед виконанням порівняння.

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

Читати далі