スプレッドシートのバージョン間の変更を分析することは、財務、レポート、データ検証のワークフローで日常的な作業です。 GroupDocs.Comparison Cloud SDK for .NET は、.NET で手動検査なしに Excel ファイルを比較するための強力な API を提供します。このガイドでは、ライブラリの設定方法、ワークブックのアップロード、C# から REST エンドポイントの呼び出し、詳細な変更情報の取得、そして正確な結果を得るための比較オプションの微調整方法を紹介します。

開始前: 前提条件とインストール

開始する前に、以下が揃っていることを確認してください:

  • .NET 6.0 以降がインストールされていること。
  • Visual Studio 2022 などの IDE。
  • ClientId と ClientSecret を持つ GroupDocs Cloud アカウント。
  • Excel ファイルをアップロードする GroupDocs Cloud ストレージへのアクセス。

NuGet を使用して SDK をインストールします:

dotnet add package GroupDocs.Comparison-Cloud

最新パッケージをリリースページからダウンロードしてください。インストール後、後述のコードに資格情報を追加します。これで比較ワークフローを開始する準備が整いました。

.NET で Excel ファイルを比較するステップバイステップ ガイド

以下の手順は、SDK を使用して .NET で Excel ファイルを比較する方法を示しています。

ステップ 1: ソースおよびターゲット ドキュメントを読み込む

資格情報を使用して構成オブジェクトを作成し、CompareApi をインスタンス化します。

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

var compareApi = new CompareApi(config);

ステップ 2: Excel ワークブックの準備

GroupDocs Cloud ストレージに保存されているソースおよびターゲットの XLSX ファイルを指す FileInfo オブジェクトを定義します。

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

これらの手順により、.NET で Excel ファイルの比較プロセスを完全に自動化しました。

プログラムで 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}");
            }
        }
    }
}

注: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパスや構成値を実際の環境に合わせて更新し、必要な依存関係がすべて正しくインストールされていることを確認し、開発環境で十分にテストしてください。問題が発生した場合は、公式ドキュメント または サポートチーム にお問い合わせください。

cURL を使用した REST による Excel 比較の実行

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. 結果の差分ワークブックをダウンロード

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 を使用すると、.NET で Excel ファイルを簡単に比較し、すべての変更をハイライトした詳細な差分ブックを取得できます。SDK の REST ベースのアーキテクチャにより、C# サービス、Web API、またはバックグラウンド ジョブにスプレッドシート比較を最小限の手間で統合できます。本番環境で使用するには適切なライセンスを取得することを忘れないでください。臨時ライセンスは ライセンスページ から入手でき、製品サイトに完全なライセンス情報が掲載されています。今すぐ Excel の差分ワークフローの自動化を開始し、手動検査のエラーを排除しましょう。

よくある質問

  • .NETで大量のコードを書かずにExcelファイルを比較するにはどうすればよいですか?
    SDKは重い処理を抽象化します。クレデンシャルを設定し、2つのXLSXファイルを指すだけで、compareApi.Compare を呼び出します。ライブラリは差分ファイルと変更オブジェクトのリストを返します。

  • 差分結果はどの形式で使用されますか?
    デフォルトでは、結果は XLSX ワークブックとして保存され、元のレイアウトを保持しながら、削除、挿入、スタイル変更に対して視覚的マーカーが適用されます。

  • 保護されたExcelブックを比較できますか?
    はい。FileInfo オブジェクトの Password プロパティにパスワードを指定してください。APIは比較を実行する前にブックのロックを解除します。

  • 開発およびテストにライセンスは必要ですか?
    一時ライセンスはライセンスページから取得できます。 本番環境へのデプロイには、製品ページに記載されている通り、フルライセンスを購入する必要があります。

もっと読む