<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>excel comparison on Document Processing REST APIs | GroupDocs Cloud</title>
    <link>https://blog-qa.groupdocs.cloud/pt/tag/excel-comparison/</link>
    <description>Recent content in excel comparison on Document Processing REST APIs | GroupDocs Cloud</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>pt</language>
    <lastBuildDate>Fri, 09 Oct 2026 14:45:06 +0000</lastBuildDate><atom:link href="https://blog-qa.groupdocs.cloud/pt/tag/excel-comparison/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Comparar arquivos Excel via REST em C#</title>
      <link>https://blog-qa.groupdocs.cloud/pt/comparison/compare-excel-files-via-rest-in-csharp/</link>
      <pubDate>Fri, 09 Oct 2026 14:45:06 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/pt/comparison/compare-excel-files-via-rest-in-csharp/</guid>
      <description>Aprenda como comparar arquivos Excel via REST em C# usando GroupDocs.Comparison Cloud SDK for .NET. Siga um guia conciso com código, cURL e etapas de configuração.</description>
      <content:encoded><![CDATA[<p>Comparar planilhas do Excel programaticamente é uma necessidade frequente quando você precisa detectar alterações de dados, auditar revisões ou gerar relatórios. <a href="https://products.groupdocs.cloud/comparison/net/">GroupDocs.Comparison Cloud SDK for .NET</a> fornece uma poderosa biblioteca baseada em REST que facilita a comparação de arquivos Excel via REST em C#. Este guia orienta você sobre como fazer upload de arquivos, configurar opções de comparação, executar a comparação e recuperar o resultado, com exemplos de código em C# e cURL.</p>
<h2 id="compare-arquivos-excel-via-rest-em-c-em-5-etapas">Compare arquivos Excel via REST em C# em 5 etapas</h2>
<ol>
<li><strong>Carregue o arquivo [XLSX] de origem</strong>: Use o método <code>StorageApi.UploadFile</code> para colocar <code>sample1.xlsx</code> no armazenamento em nuvem.</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> stream1 = <span style="color:#66d9ef">new</span> FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> uploadRequest1 = <span style="color:#66d9ef">new</span> UploadFileRequest(remoteFilePath1, stream1);
</span></span><span style="display:flex;"><span>    storageApi.UploadFile(uploadRequest1);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><ol start="2">
<li><strong>Carregue o arquivo XLSX de destino</strong>: Repita o upload para <code>sample2.xlsx</code>.</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> stream2 = <span style="color:#66d9ef">new</span> FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> uploadRequest2 = <span style="color:#66d9ef">new</span> UploadFileRequest(remoteFilePath2, stream2);
</span></span><span style="display:flex;"><span>    storageApi.UploadFile(uploadRequest2);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><ol start="3">
<li><strong>Configure as opções de comparação</strong>: Crie um objeto <code>CompareOptions</code>, defina os caminhos dos arquivos de origem e destino, especifique o caminho de saída e ajuste configurações como <code>GenerateSummaryPage</code>.</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> compareOptions = <span style="color:#66d9ef">new</span> CompareOptions
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    SourceFile = <span style="color:#66d9ef">new</span> FileInfo { FilePath = remoteFilePath1 },
</span></span><span style="display:flex;"><span>    TargetFiles = <span style="color:#66d9ef">new</span> List&lt;FileInfo&gt;
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">new</span> FileInfo { FilePath = remoteFilePath2 }
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    OutputPath = remoteResultPath,
</span></span><span style="display:flex;"><span>    Settings = <span style="color:#66d9ef">new</span> Settings
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        GenerateSummaryPage = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>        ShowDeletedContent = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>        ShowInsertedContent = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>};
</span></span></code></pre></div><p>Consulte a referência completa da API para <code>CompareOptions</code> e <code>Settings</code> em <a href="https://reference.groupdocs.cloud/comparison/">Referência da API</a>.<br>
4. <strong>Execute a comparação</strong>: Chame <code>CompareApi.CompareDocument</code> com um <code>CompareDocumentRequest</code>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> compareRequest = <span style="color:#66d9ef">new</span> CompareDocumentRequest(compareOptions);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> compareResult = compareApi.CompareDocument(compareRequest);
</span></span></code></pre></div><ol start="5">
<li><strong>Baixe o resultado e faça a limpeza</strong>: Recupere o <code>result.xlsx</code> gerado, salve-o localmente e, opcionalmente, exclua os arquivos remotos.</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> downloadRequest = <span style="color:#66d9ef">new</span> DownloadFileRequest(compareResult.Path);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> resultStream = storageApi.DownloadFile(downloadRequest))
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> fileStream = <span style="color:#66d9ef">new</span> FileStream(localResultPath, FileMode.Create, FileAccess.Write))
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    resultStream.CopyTo(fileStream);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Clean up</span>
</span></span><span style="display:flex;"><span>storageApi.DeleteFile(<span style="color:#66d9ef">new</span> DeleteFileRequest(remoteFilePath1));
</span></span><span style="display:flex;"><span>storageApi.DeleteFile(<span style="color:#66d9ef">new</span> DeleteFileRequest(remoteFilePath2));
</span></span><span style="display:flex;"><span>storageApi.DeleteFile(<span style="color:#66d9ef">new</span> DeleteFileRequest(remoteResultPath));
</span></span></code></pre></div><h2 id="exemplo-completo-de-código-comparar-arquivos-excel-via-rest-em-c-usando-groupdocscomparison">Exemplo completo de código: comparar arquivos Excel via REST em C# usando GroupDocs.Comparison</h2>
<p>Este exemplo demonstra como fazer upload de dois arquivos XLSX, compará‑los e baixar o resultado destacado.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.Collections.Generic;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.IO;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Comparison.Cloud.Sdk.Api;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Comparison.Cloud.Sdk.Client;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Comparison.Cloud.Sdk.Model;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Comparison.Cloud.Sdk.Model.Requests;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">namespace</span> CompareExcelFilesExample
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Program</span>
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> Main(<span style="color:#66d9ef">string</span>[] args)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Configuration – replace with your actual credentials</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> config = <span style="color:#66d9ef">new</span> Configuration
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                ClientId = <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>,
</span></span><span style="display:flex;"><span>                ClientSecret = <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>
</span></span><span style="display:flex;"><span>            };
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// APIs</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> compareApi = <span style="color:#66d9ef">new</span> CompareApi(config);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> storageApi = <span style="color:#66d9ef">new</span> StorageApi(config);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Local and remote file names</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">string</span> localFilePath1 = <span style="color:#e6db74">&#34;sample1.xlsx&#34;</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">string</span> localFilePath2 = <span style="color:#e6db74">&#34;sample2.xlsx&#34;</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">string</span> remoteFilePath1 = <span style="color:#e6db74">&#34;sample1.xlsx&#34;</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">string</span> remoteFilePath2 = <span style="color:#e6db74">&#34;sample2.xlsx&#34;</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">string</span> remoteResultPath = <span style="color:#e6db74">&#34;result.xlsx&#34;</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">string</span> localResultPath = <span style="color:#e6db74">&#34;result.xlsx&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Upload first Excel file</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> stream1 = <span style="color:#66d9ef">new</span> FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">var</span> uploadRequest1 = <span style="color:#66d9ef">new</span> UploadFileRequest(remoteFilePath1, stream1);
</span></span><span style="display:flex;"><span>                storageApi.UploadFile(uploadRequest1);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Upload second Excel file</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> stream2 = <span style="color:#66d9ef">new</span> FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">var</span> uploadRequest2 = <span style="color:#66d9ef">new</span> UploadFileRequest(remoteFilePath2, stream2);
</span></span><span style="display:flex;"><span>                storageApi.UploadFile(uploadRequest2);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Prepare comparison options</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> compareOptions = <span style="color:#66d9ef">new</span> CompareOptions
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                SourceFile = <span style="color:#66d9ef">new</span> FileInfo { FilePath = remoteFilePath1 },
</span></span><span style="display:flex;"><span>                TargetFiles = <span style="color:#66d9ef">new</span> List&lt;FileInfo&gt;
</span></span><span style="display:flex;"><span>                {
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">new</span> FileInfo { FilePath = remoteFilePath2 }
</span></span><span style="display:flex;"><span>                },
</span></span><span style="display:flex;"><span>                OutputPath = remoteResultPath,
</span></span><span style="display:flex;"><span>                Settings = <span style="color:#66d9ef">new</span> Settings
</span></span><span style="display:flex;"><span>                {
</span></span><span style="display:flex;"><span>                    <span style="color:#75715e">// Example: show changes in a new sheet</span>
</span></span><span style="display:flex;"><span>                    GenerateSummaryPage = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>                    ShowDeletedContent = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>                    ShowInsertedContent = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>            };
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Execute comparison</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> compareRequest = <span style="color:#66d9ef">new</span> CompareDocumentRequest(compareOptions);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> compareResult = compareApi.CompareDocument(compareRequest);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Download the result file</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> downloadRequest = <span style="color:#66d9ef">new</span> DownloadFileRequest(compareResult.Path);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> resultStream = storageApi.DownloadFile(downloadRequest))
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> fileStream = <span style="color:#66d9ef">new</span> FileStream(localResultPath, FileMode.Create, FileAccess.Write))
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                resultStream.CopyTo(fileStream);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Optional: clean up remote files</span>
</span></span><span style="display:flex;"><span>            storageApi.DeleteFile(<span style="color:#66d9ef">new</span> DeleteFileRequest(remoteFilePath1));
</span></span><span style="display:flex;"><span>            storageApi.DeleteFile(<span style="color:#66d9ef">new</span> DeleteFileRequest(remoteFilePath2));
</span></span><span style="display:flex;"><span>            storageApi.DeleteFile(<span style="color:#66d9ef">new</span> DeleteFileRequest(remoteResultPath));
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Console.WriteLine(<span style="color:#e6db74">&#34;Comparison completed. Result saved to &#34;</span> + localResultPath);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><blockquote>
<p><strong>Nota:</strong> Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar quaisquer caminhos de arquivos e valores de configuração para corresponder ao seu ambiente real, verifique se todas as dependências necessárias estão instaladas corretamente e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a <a href="https://docs.groupdocs.cloud/comparison/">documentação oficial</a> ou entre em contato com a <a href="https://forum.groupdocs.cloud/c/comparison/12">equipe de suporte</a> para obter assistência.</p>
</blockquote>
<h2 id="chamando-a-api-rest-de-comparação-com-curl">Chamando a API REST de Comparação com cURL</h2>
<p>Abaixo está um fluxo de trabalho cURL que realiza a mesma operação sem escrever código C#. Substitua os valores de espaço reservado pelas suas credenciais reais e pelos nomes dos arquivos.</p>
<ol>
<li>
<p><strong>Obtenha um token de acesso</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/oauth2/token&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{&#34;client_id&#34;:&#34;YOUR_CLIENT_ID&#34;,&#34;client_secret&#34;:&#34;YOUR_CLIENT_SECRET&#34;}&#39;</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Carregue o arquivo XLSX de origem</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X PUT <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/sample1.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     --data-binary <span style="color:#e6db74">&#34;@sample1.xlsx&#34;</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Carregue o arquivo XLSX de destino</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X PUT <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/sample2.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     --data-binary <span style="color:#e6db74">&#34;@sample2.xlsx&#34;</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Execute a comparação</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/comparison/compare&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;source_file&#34;: {&#34;file_path&#34;: &#34;sample1.xlsx&#34;},
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;target_files&#34;: [{&#34;file_path&#34;: &#34;sample2.xlsx&#34;}],
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;output_path&#34;: &#34;result.xlsx&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;settings&#34;: {
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;generate_summary_page&#34;: true,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;show_deleted_content&#34;: true,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;show_inserted_content&#34;: true
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           }
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Baixe o resultado</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/result.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -o result.xlsx
</span></span></code></pre></div></li>
</ol>
<p>Para obter uma lista completa de endpoints e parâmetros, veja a <a href="https://docs.groupdocs.cloud/comparison/">documentação oficial da API</a>.</p>
<h2 id="pré-requisitos-e-configuração">Pré-requisitos e Configuração</h2>
<ol>
<li>Instale o pacote .NET via NuGet:</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>dotnet add package GroupDocs.Comparison-Cloud
</span></span></code></pre></div><ol start="2">
<li>Certifique-se de que possui uma conta válida do GroupDocs Cloud e obtenha seu <strong>Client Id</strong> e <strong>Client Secret</strong> no painel.</li>
<li>.NET 6.0 ou posterior é necessário.</li>
</ol>
<p>Você pode baixar a biblioteca mais recente na <a href="https://releases.groupdocs.cloud/comparison/net/">página de download</a>.</p>
<h2 id="ajustando-configurações-de-comparação">Ajustando Configurações de Comparação</h2>
<p>O objeto <code>Settings</code> dentro de <code>CompareOptions</code> permite controlar a saída. Ajustes comuns incluem:</p>
<ul>
<li><strong>GenerateSummaryPage</strong> - adiciona uma planilha de resumo com estatísticas de alterações.</li>
<li><strong>ShowDeletedContent</strong> - destaca as células que foram removidas.</li>
<li><strong>ShowInsertedContent</strong> - destaca as células recém adicionadas.</li>
</ul>
<p>Essas propriedades já são usadas no exemplo de código acima. Para opções adicionais, como proteção <code>Password</code> ou <code>StyleChangeDetection</code>, consulte a <a href="https://reference.groupdocs.cloud/comparison/">Referência da API</a>.</p>
<h2 id="conclusão">Conclusão</h2>
<p>Comparar arquivos Excel via REST em C# torna-se simples com o <a href="https://products.groupdocs.cloud/comparison/net/">GroupDocs.Comparison Cloud SDK for .NET</a>. Seguindo as etapas, você pode fazer upload de arquivos XLSX, configurar configurações detalhadas de comparação, executar a comparação e recuperar uma pasta de trabalho de resultado que marca claramente as diferenças. Lembre-se de proteger suas credenciais de API, respeitar os limites de tamanho de arquivo e usar uma licença temporária para desenvolvimento. Quando estiver pronto para produção, adquira uma licença completa na <a href="https://purchase.groupdocs.cloud/temporary-license/">página de preços</a> para desbloquear uso ilimitado.</p>
<h2 id="faqs">FAQs</h2>
<ul>
<li>
<p><strong>Como comparo arquivos Excel via REST em C# usando GroupDocs.Comparison?</strong><br>
Use o SDK para enviar dois arquivos XLSX, defina <code>CompareOptions</code>, chame <code>CompareDocument</code> e baixe o arquivo resultante. O fluxo completo é ilustrado nas seções de código e cURL acima.</p>
</li>
<li>
<p><strong>Qual método de autenticação a API REST requer?</strong><br>
A API usa OAuth 2.0 com seu client‑id e client‑secret para obter um token de acesso, que deve ser enviado no cabeçalho <code>Authorization: Bearer</code> para cada requisição.</p>
</li>
<li>
<p><strong>Posso personalizar quais alterações são destacadas no resultado da comparação?</strong><br>
Sim. Ajuste o objeto <code>Settings</code> (por exemplo, <code>GenerateSummaryPage</code>, <code>ShowDeletedContent</code>, <code>ShowInsertedContent</code>) para controlar a aparência das diferenças.</p>
</li>
<li>
<p><strong>É uma licença temporária suficiente para testes?</strong><br>
Uma licença temporária da <a href="https://purchase.groupdocs.cloud/temporary-license/">página de licença temporária</a> funciona para desenvolvimento e teste. Para implantações de produção, adquira uma licença completa.</p>
</li>
</ul>
<h2 id="read-more">Read More</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/pt/comparison/compare-excel-files-using-rest-api-in-python/">Comparar arquivos Excel usando API REST em Python</a></li>
<li><a href="https://blog.groupdocs.cloud/pt/comparison/compare-two-excel-sheets-and-highlight-differences-using-java/">Comparar arquivos Excel e destacar diferenças em Java usando API REST</a></li>
<li><a href="https://blog.groupdocs.cloud/pt/comparison/compare-pdf-files-using-rest-api-in-python/">Comparar arquivos PDF usando API REST em Python</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>Comparar arquivos Excel via REST em C#</title>
      <link>https://blog-qa.groupdocs.cloud/pt/comparison/compare-excel-files-via-rest-in-csharp/</link>
      <pubDate>Mon, 21 Sep 2026 11:32:39 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/pt/comparison/compare-excel-files-via-rest-in-csharp/</guid>
      <description>Aprenda como comparar arquivos Excel em .NET usando GroupDocs.Comparison Cloud SDK. Este guia mostra a integração REST, código C#, comandos cURL e dicas.</description>
      <content:encoded><![CDATA[<p>Analisar mudanças entre versões de planilhas é uma tarefa rotineira para finanças, relatórios e fluxos de trabalho de validação de dados. <a href="https://products.groupdocs.cloud/comparison/net/">GroupDocs.Comparison Cloud SDK for .NET</a> fornece uma API poderosa que facilita a comparação de arquivos <a href="https://docs.fileformat.com/spreadsheet/xlsx/">Excel</a> em .NET sem inspeção manual. Neste guia, você verá como configurar a biblioteca, fazer upload de pastas de trabalho, chamar o endpoint REST a partir do C#, recuperar informações detalhadas sobre as alterações e ajustar finamente as opções de comparação para obter resultados precisos.</p>
<h2 id="antes-de-começar-pré-requisitos-e-instalação">Antes de Começar: Pré-requisitos e Instalação</h2>
<p>Antes de começar, certifique‑se de que você tem o seguinte:</p>
<ul>
<li>.NET 6.0 ou posterior instalado.</li>
<li>Uma IDE como o Visual Studio 2022.</li>
<li>Uma conta do GroupDocs Cloud com <strong>ClientId</strong> e <strong>ClientSecret</strong>.</li>
<li>Acesso ao armazenamento do GroupDocs Cloud onde os arquivos Excel serão enviados.</li>
</ul>
<p>Instale o SDK via NuGet:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>dotnet add package GroupDocs.Comparison-Cloud
</span></span></code></pre></div><p>Baixe o pacote mais recente na <a href="https://releases.groupdocs.cloud/comparison/net/">página de lançamentos</a>. Após a instalação, adicione suas credenciais no código conforme mostrado a seguir. Agora você está pronto para iniciar o fluxo de trabalho de comparação.</p>
<h2 id="guia-passo-a-passo-para-comparar-arquivos-excel-no-net">Guia passo a passo para comparar arquivos Excel no .NET</h2>
<p>As etapas a seguir ilustram como comparar arquivos Excel em .NET usando o SDK.</p>
<h3 id="etapa-1-carregar-os-documentos-de-origem-e-destino">Etapa 1: Carregar os documentos de origem e destino</h3>
<p>Crie um objeto de configuração com suas credenciais e instancie o <code>CompareApi</code>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> config = <span style="color:#66d9ef">new</span> Configuration
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    ClientId = <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>,
</span></span><span style="display:flex;"><span>    ClientSecret = <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>
</span></span><span style="display:flex;"><span>};
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> compareApi = <span style="color:#66d9ef">new</span> CompareApi(config);
</span></span></code></pre></div><h3 id="passo-2-prepare-as-pastas-de-trabalho-do-excel">Passo 2: Prepare as pastas de trabalho do Excel</h3>
<p>Defina objetos <code>FileInfo</code> que apontam para os arquivos <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> de origem e destino armazenados no armazenamento do GroupDocs Cloud.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> sourceFile = <span style="color:#66d9ef">new</span> FileInfo { FilePath = <span style="color:#e6db74">&#34;input/source.xlsx&#34;</span> };
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> targetFile = <span style="color:#66d9ef">new</span> FileInfo { FilePath = <span style="color:#e6db74">&#34;input/target.xlsx&#34;</span> };
</span></span></code></pre></div><h3 id="etapa-3-definir-opções-e-configurações-de-comparação">Etapa 3: Definir Opções e Configurações de Comparação</h3>
<p>Configure o objeto <code>CompareOptions</code>, incluindo configurações detalhadas de alterações.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> compareOptions = <span style="color:#66d9ef">new</span> CompareOptions
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    SourceFile = sourceFile,
</span></span><span style="display:flex;"><span>    TargetFiles = <span style="color:#66d9ef">new</span> List&lt;FileInfo&gt; { targetFile },
</span></span><span style="display:flex;"><span>    OutputPath = <span style="color:#e6db74">&#34;output/diff_result.xlsx&#34;</span>,
</span></span><span style="display:flex;"><span>    Settings = <span style="color:#66d9ef">new</span> Settings
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        ShowDeletedContent = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>        ShowInsertedContent = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>        ShowStyleChanges = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>        GenerateSummaryPage = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>};
</span></span></code></pre></div><p>Para obter uma lista completa de configurações, consulte a <a href="https://reference.groupdocs.cloud/comparison/">referência da API</a>.</p>
<h3 id="etapa-4-executar-a-comparação-e-processar-os-resultados">Etapa 4: Executar a Comparação e Processar os Resultados</h3>
<p>Chame o método <code>Compare</code> e leia as informações básicas do resultado.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> compareResult = compareApi.Compare(compareOptions);
</span></span><span style="display:flex;"><span>Console.WriteLine(<span style="color:#e6db74">$&#34;Comparison completed. Result file: {compareResult.Path}&#34;</span>);
</span></span><span style="display:flex;"><span>Console.WriteLine(<span style="color:#e6db74">$&#34;Number of changes detected: {compareResult.Changes?.Count ?? 0}&#34;</span>);
</span></span></code></pre></div><h3 id="etapa-5-recuperar-informações-detalhadas-de-alterações">Etapa 5: Recuperar informações detalhadas de alterações</h3>
<p>Se precisar de um relatório detalhado, use a solicitação <code>GetChanges</code>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> changesRequest = <span style="color:#66d9ef">new</span> GetChangesRequest
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    SourceFile = sourceFile,
</span></span><span style="display:flex;"><span>    TargetFile = targetFile,
</span></span><span style="display:flex;"><span>    OutputPath = <span style="color:#e6db74">&#34;output/detailed_changes.json&#34;</span>
</span></span><span style="display:flex;"><span>};
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> detailedChanges = compareApi.GetChanges(changesRequest);
</span></span><span style="display:flex;"><span>Console.WriteLine(<span style="color:#e6db74">$&#34;Detailed changes saved to: {detailedChanges.Path}&#34;</span>);
</span></span></code></pre></div><p>Com estas etapas, você automatizou totalmente o processo de comparação de arquivos Excel no .NET.</p>
<h2 id="comparando-arquivos-excel-programaticamente---exemplo-de-código-completo">Comparando Arquivos Excel Programaticamente - Exemplo de Código Completo</h2>
<p>O código a seguir demonstra o fluxo de trabalho completo, da configuração ao tratamento do resultado.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> System.Collections.Generic;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Comparison.Cloud.Sdk.Api;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Comparison.Cloud.Sdk.Client;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">using</span> GroupDocs.Comparison.Cloud.Sdk.Model;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">namespace</span> CompareExcelDemo
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Program</span>
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> Main(<span style="color:#66d9ef">string</span>[] args)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Set up API credentials (replace with your actual credentials)</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> config = <span style="color:#66d9ef">new</span> Configuration
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                ClientId = <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>,
</span></span><span style="display:flex;"><span>                ClientSecret = <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>
</span></span><span style="display:flex;"><span>            };
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Initialize Compare API</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> compareApi = <span style="color:#66d9ef">new</span> CompareApi(config);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Prepare source and target Excel files (must be uploaded to GroupDocs Cloud storage beforehand)</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> sourceFile = <span style="color:#66d9ef">new</span> FileInfo { FilePath = <span style="color:#e6db74">&#34;input/source.xlsx&#34;</span> };
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> targetFile = <span style="color:#66d9ef">new</span> FileInfo { FilePath = <span style="color:#e6db74">&#34;input/target.xlsx&#34;</span> };
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Define comparison options</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">var</span> compareOptions = <span style="color:#66d9ef">new</span> CompareOptions
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                SourceFile = sourceFile,
</span></span><span style="display:flex;"><span>                TargetFiles = <span style="color:#66d9ef">new</span> List&lt;FileInfo&gt; { targetFile },
</span></span><span style="display:flex;"><span>                OutputPath = <span style="color:#e6db74">&#34;output/diff_result.xlsx&#34;</span>,
</span></span><span style="display:flex;"><span>                <span style="color:#75715e">// Optional: specify that we want detailed changes for worksheets</span>
</span></span><span style="display:flex;"><span>                Settings = <span style="color:#66d9ef">new</span> Settings
</span></span><span style="display:flex;"><span>                {
</span></span><span style="display:flex;"><span>                    ShowDeletedContent = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>                    ShowInsertedContent = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>                    ShowStyleChanges = <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span>                    GenerateSummaryPage = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>            };
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">try</span>
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                <span style="color:#75715e">// Call the Compare API</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">var</span> compareResult = compareApi.Compare(compareOptions);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Output basic result information</span>
</span></span><span style="display:flex;"><span>                Console.WriteLine(<span style="color:#e6db74">$&#34;Comparison completed. Result file: {compareResult.Path}&#34;</span>);
</span></span><span style="display:flex;"><span>                Console.WriteLine(<span style="color:#e6db74">$&#34;Number of changes detected: {compareResult.Changes?.Count ?? 0}&#34;</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Iterate through change details</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span> (compareResult.Changes != <span style="color:#66d9ef">null</span>)
</span></span><span style="display:flex;"><span>                {
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">foreach</span> (<span style="color:#66d9ef">var</span> change <span style="color:#66d9ef">in</span> compareResult.Changes)
</span></span><span style="display:flex;"><span>                    {
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">&#34;--------------------------------------------------&#34;</span>);
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">$&#34;Change Type   : {change.ChangeType}&#34;</span>);
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">$&#34;Worksheet     : {change.Worksheet}&#34;</span>);
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">$&#34;Cell Address  : {change.CellAddress}&#34;</span>);
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">$&#34;Old Value     : {change.OldValue}&#34;</span>);
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">$&#34;New Value     : {change.NewValue}&#34;</span>);
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">$&#34;Is New Row    : {change.IsNewRow}&#34;</span>);
</span></span><span style="display:flex;"><span>                        Console.WriteLine(<span style="color:#e6db74">$&#34;Is New Column : {change.IsNewColumn}&#34;</span>);
</span></span><span style="display:flex;"><span>                    }
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Retrieve detailed changes via GetChanges (optional)</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">var</span> changesRequest = <span style="color:#66d9ef">new</span> GetChangesRequest
</span></span><span style="display:flex;"><span>                {
</span></span><span style="display:flex;"><span>                    SourceFile = sourceFile,
</span></span><span style="display:flex;"><span>                    TargetFile = targetFile,
</span></span><span style="display:flex;"><span>                    OutputPath = <span style="color:#e6db74">&#34;output/detailed_changes.json&#34;</span>
</span></span><span style="display:flex;"><span>                };
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">var</span> detailedChanges = compareApi.GetChanges(changesRequest);
</span></span><span style="display:flex;"><span>                Console.WriteLine(<span style="color:#e6db74">$&#34;Detailed changes saved to: {detailedChanges.Path}&#34;</span>);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">catch</span> (ApiException apiEx)
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                Console.WriteLine(<span style="color:#e6db74">$&#34;API error: {apiEx.ErrorCode} - {apiEx.Message}&#34;</span>);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">catch</span> (Exception ex)
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>                Console.WriteLine(<span style="color:#e6db74">$&#34;Unexpected error: {ex.Message}&#34;</span>);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><blockquote>
<p><strong>Nota:</strong> Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar quaisquer caminhos de arquivo e valores de configuração para corresponder ao seu ambiente real, verifique se todas as dependências necessárias estão devidamente instaladas e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a <a href="https://docs.groupdocs.cloud/comparison/">documentação oficial</a> ou entre em contato com a <a href="https://forum.groupdocs.cloud/c/comparison/12">equipe de suporte</a> para obter assistência.</p>
</blockquote>
<h2 id="executar-comparação-de-excel-via-rest-com-curl">Executar Comparação de Excel via REST com cURL</h2>
<p>Você pode obter o mesmo resultado sem escrever código C# chamando a API REST diretamente.</p>
<p><strong>1. Autenticar e Obter Token de Acesso</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v1.0/oauth2/token&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{&#34;client_id&#34;:&#34;YOUR_CLIENT_ID&#34;,&#34;client_secret&#34;:&#34;YOUR_CLIENT_SECRET&#34;}&#39;</span>
</span></span></code></pre></div><p><strong>2. Carregar a Pasta de Trabalho de Origem</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X PUT <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v1.0/storage/file?path=input/source.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -T <span style="color:#e6db74">&#34;./source.xlsx&#34;</span>
</span></span></code></pre></div><p><strong>3. Carregar a Pasta de Trabalho de Destino</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X PUT <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v1.0/storage/file?path=input/target.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -T <span style="color:#e6db74">&#34;./target.xlsx&#34;</span>
</span></span></code></pre></div><p><strong>4. Execute a Comparação</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v1.0/comparison/compare&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;source_file&#34;: {&#34;file_path&#34;:&#34;input/source.xlsx&#34;},
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;target_files&#34;: [{&#34;file_path&#34;:&#34;input/target.xlsx&#34;}],
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;output_path&#34;:&#34;output/diff_result.xlsx&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;settings&#34;: {
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;show_deleted_content&#34;: true,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;show_inserted_content&#34;: true,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;show_style_changes&#34;: true,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;generate_summary_page&#34;: true
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           }
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><p><strong>5. Baixe a Pasta de Trabalho de Diferença Resultante</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v1.0/storage/file?path=output/diff_result.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -o diff_result.xlsx
</span></span></code></pre></div><p>Para obter uma lista completa de parâmetros, veja a <a href="https://docs.groupdocs.cloud/comparison/">documentação oficial da API</a>.</p>
<h2 id="conclusão">Conclusão</h2>
<p>Usando o <strong>GroupDocs.Comparison Cloud SDK for .NET</strong> você pode comparar facilmente arquivos Excel no .NET e obter uma planilha de diferenças detalhada que destaca cada modificação. A arquitetura baseada em REST do SDK permite integrar a comparação de planilhas em qualquer serviço C#, API web ou tarefa em segundo plano com esforço mínimo. Lembre‑se de adquirir uma licença adequada para uso em produção; uma licença temporária está disponível na <a href="https://purchase.groupdocs.cloud/temporary-license/">página de licença</a> e os detalhes completos de licenciamento estão listados no site do produto. Comece a automatizar seus fluxos de trabalho de diff de Excel hoje e elimine erros de inspeção manual.</p>
<h2 id="perguntas-frequentes">Perguntas Frequentes</h2>
<ul>
<li>
<p><strong>Como posso comparar arquivos Excel em .NET sem escrever muito código?</strong><br>
O SDK abstrai o trabalho pesado. Você só precisa configurar as credenciais, apontar para os dois arquivos XLSX e chamar <code>compareApi.Compare</code>. A biblioteca retorna um arquivo de diff e uma lista de objetos de alteração.</p>
</li>
<li>
<p><strong>Qual formato o resultado do diff usa?</strong><br>
Por padrão, o resultado é salvo como uma pasta de trabalho XLSX, preservando o layout original enquanto aplica marcadores visuais para exclusões, inserções e alterações de estilo.</p>
</li>
<li>
<p><strong>É possível comparar pastas de trabalho do Excel protegidas?</strong><br>
Sim. Forneça a senha na propriedade <code>Password</code> do objeto <code>FileInfo</code>. A API desbloqueará a pasta de trabalho antes de executar a comparação.</p>
</li>
<li>
<p><strong>Preciso de uma licença para desenvolvimento e teste?</strong><br>
Uma licença temporária pode ser obtida na <a href="https://purchase.groupdocs.cloud/temporary-license/">página de licença</a>. Para implantações de produção, você deve adquirir uma licença completa conforme descrito na página do produto.</p>
</li>
</ul>
<h2 id="leia-mais">Leia Mais</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/pt/comparison/compare-excel-files-using-rest-api-in-python/">Comparar arquivos Excel usando REST API em Python</a></li>
<li><a href="https://blog.groupdocs.cloud/pt/comparison/compare-two-excel-sheets-and-highlight-differences-using-java/">Comparar arquivos Excel e destacar diferenças em Java usando REST API</a></li>
<li><a href="https://blog.groupdocs.cloud/pt/comparison/compare-pdf-files-using-rest-api-in-python/">Comparar arquivos PDF usando REST API em Python</a></li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
