Analiza zmian między wersjami arkuszy kalkulacyjnych jest rutynowym zadaniem w procesach finansowych, raportowania i weryfikacji danych. GroupDocs.Comparison Cloud SDK for .NET zapewnia potężne API, które ułatwia porównywanie plików Excel w .NET bez ręcznej inspekcji. W tym przewodniku zobaczysz, jak skonfigurować bibliotekę, przesłać skoroszyty, wywołać punkt końcowy REST z C#, pobrać szczegółowe informacje o zmianach oraz precyzyjnie dostroić opcje porównania dla dokładnych wyników.

Przed rozpoczęciem: Wymagania wstępne i instalacja

Zanim rozpoczniesz, upewnij się, że masz następujące:

  • .NET 6.0 lub nowszy zainstalowany.
  • IDE, takie jak Visual Studio 2022.
  • Konto GroupDocs Cloud z ClientId i ClientSecret.
  • Dostęp do GroupDocs Cloud storage, w którym zostaną przesłane pliki Excel.

Zainstaluj SDK za pomocą NuGet:

dotnet add package GroupDocs.Comparison-Cloud

Pobierz najnowszy pakiet ze strony wydania. Po instalacji dodaj swoje dane uwierzytelniające w kodzie, jak pokazano później. Jesteś teraz gotowy, aby rozpocząć przepływ pracy porównania.

Przewodnik krok po kroku porównywania plików Excel w .NET

Poniższe kroki ilustrują, jak porównać pliki Excel w .NET przy użyciu SDK.

Krok 1: Załaduj dokumenty źródłowe i docelowe

Utwórz obiekt konfiguracji z danymi uwierzytelniającymi i zainicjuj CompareApi.

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

var compareApi = new CompareApi(config);

Krok 2: Przygotuj skoroszyty Excel

Zdefiniuj obiekty FileInfo, które wskazują na pliki źródłowe i docelowe XLSX przechowywane w magazynie GroupDocs Cloud.

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

Krok 3: Ustaw opcje i ustawienia porównania

Skonfiguruj obiekt CompareOptions, w tym szczegółowe ustawienia zmian.

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
    }
};

Aby uzyskać pełną listę ustawień, odwołaj się do referencji API.

Krok 4: Wykonaj porównanie i przetwórz wyniki

Wywołaj metodę Compare i odczytaj podstawowe informacje o wyniku.

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

Krok 5: Pobierz szczegółowe informacje o zmianach

Jeśli potrzebujesz szczegółowego raportu, użyj żądania 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}");

Dzięki tym krokom w pełni zautomatyzowałeś proces porównywania plików Excel w .NET.

Porównywanie plików Excel programowo - Pełny przykład kodu

Poniższy kod demonstruje kompletny przepływ pracy od konfiguracji po obsługę wyniku.

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}");
            }
        }
    }
}

Uwaga: Ten przykład kodu demonstruje podstawową funkcjonalność. Przed użyciem go w swoim projekcie upewnij się, że zaktualizowałeś wszystkie ścieżki plików i wartości konfiguracyjne, aby pasowały do rzeczywistego środowiska, zweryfikuj, że wszystkie wymagane zależności są prawidłowo zainstalowane, oraz dokładnie przetestuj w środowisku deweloperskim. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do oficjalnej dokumentacji lub skontaktuj się z zespołem wsparcia w celu uzyskania pomocy.

Wykonaj porównanie plików Excel za pomocą REST i cURL

Możesz osiągnąć ten sam wynik bez pisania kodu C#, wywołując bezpośrednio interfejs REST API.

1. Uwierzytelnij i uzyskaj token dostępu

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. Prześlij skoroszyt źródłowy

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. Prześlij docelny skoroszyt

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. Wykonaj porównanie

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. Pobierz wynikowy skoroszyt 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

Aby uzyskać pełną listę parametrów, zobacz oficjalną dokumentację API.

Podsumowanie

Korzystając z GroupDocs.Comparison Cloud SDK for .NET możesz łatwo porównywać pliki Excel w .NET i uzyskać szczegółowy skoroszyt diff, który podświetla każdą modyfikację. Architektura SDK oparta na REST umożliwia integrację porównywania arkuszy kalkulacyjnych w dowolnej usłudze C#, interfejsie web API lub zadaniu w tle przy minimalnym wysiłku. Pamiętaj, aby uzyskać odpowiednią licencję do użytku produkcyjnego; tymczasowa licencja jest dostępna na stronie licencji, a pełne informacje o licencjonowaniu znajdują się na stronie produktu. Rozpocznij automatyzację swoich przepływów pracy diff w Excelu już dziś i wyeliminuj błędy ręcznej inspekcji.

FAQs

  • Jak mogę porównać pliki Excel w .NET bez pisania dużej ilości kodu?
    SDK abstrahuje ciężką pracę. Wystarczy skonfigurować poświadczenia, wskazać dwa pliki XLSX i wywołać compareApi.Compare. Biblioteka zwraca plik diff oraz listę obiektów zmian.

  • Jaki format ma wynik diff?
    Domyślnie wynik jest zapisywany jako skoroszyt XLSX, zachowując pierwotny układ i jednocześnie stosując wizualne znaczniki dla usunięć, wstawek i zmian stylu.

  • Czy można porównać chronione skoroszyty Excel?
    Tak. Podaj hasło w właściwości Password obiektu FileInfo. API odblokuje skoroszyt przed wykonaniem porównania.

  • Czy potrzebuję licencji do rozwoju i testowania?
    Tymczasową licencję można uzyskać na stronie licencji. W przypadku wdrożeń produkcyjnych należy zakupić pełną licencję, jak opisano na stronie produktu.

Czytaj więcej