Сравнение листов Excel программно — частая задача, когда необходимо обнаружить изменения данных, провести аудит версий или сформировать отчёты. GroupDocs.Comparison Cloud SDK for .NET предоставляет мощную библиотеку на основе REST, которая упрощает сравнение файлов Excel через REST в C#. В этом руководстве вы узнаете, как загружать файлы, настраивать параметры сравнения, выполнять сравнение и получать результат, с примерами кода на C# и cURL.
Сравнение Excel‑файлов через REST на C# за 5 шагов
- Загрузите исходный файл XLSX: используйте метод
StorageApi.UploadFile, чтобы разместитьsample1.xlsxв облачном хранилище.
using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
{
var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
storageApi.UploadFile(uploadRequest1);
}
- Загрузите целевой файл XLSX: повторите загрузку для
sample2.xlsx.
using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
{
var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
storageApi.UploadFile(uploadRequest2);
}
- Настройте параметры сравнения: создайте объект
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);
- Скачайте результат и выполните очистку: получите сгенерированный
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);
}
}
}
Примечание: Этот пример кода демонстрирует базовый функционал. Прежде чем использовать его в вашем проекте, убедитесь, что обновили все пути к файлам и значения конфигурации в соответствии с вашей реальной средой, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если вы столкнётесь с какими‑либо проблемами, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.
Вызов Comparison REST API с помощью cURL
Ниже приведён workflow cURL, который выполняет ту же операцию без написания кода C#. Замените значения‑заполнители вашими реальными учётными данными и именами файлов.
Получить токен доступа
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"}'Загрузить исходный файл 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"Загрузить целевой файл 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"Запустить сравнение
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 } }'Скачать результат
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/result.xlsx" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -o result.xlsx
Для полного списка конечных точек и параметров см. официальную документацию API.
Предварительные требования и настройка
- Установите пакет .NET через NuGet:
dotnet add package GroupDocs.Comparison-Cloud
- Убедитесь, что у вас есть действующая учетная запись GroupDocs Cloud и получите Client Id и Client Secret из панели управления.
- Требуется .NET 6.0 или новее.
Вы можете скачать последнюю библиотеку со страницы загрузки.
Тонкая настройка параметров сравнения
Объект Settings внутри CompareOptions позволяет контролировать вывод. Общие настройки включают:
- GenerateSummaryPage - добавляет лист сводки со статистикой изменений.
- ShowDeletedContent - выделяет ячейки, которые были удалены.
- ShowInsertedContent - выделяет вновь добавленные ячейки.
Эти свойства уже используются в приведённом выше примере кода. Для дополнительных вариантов, таких как защита Password или StyleChangeDetection, обратитесь к API Reference.
Заключение
Сравнение файлов Excel через REST в C# становится простым с помощью GroupDocs.Comparison Cloud SDK for .NET. Следуя шагам, вы можете загружать файлы XLSX, настраивать детальные параметры сравнения, выполнять сравнение и получать результирующую рабочую книгу, в которой четко отмечены различия. Не забудьте защитить свои учетные данные API, соблюдать ограничения по размеру файлов и использовать временную лицензию для разработки. Когда вы будете готовы к продакшн, приобретите полную лицензию на странице цен, чтобы открыть неограниченное использование.
FAQs
Как сравнить файлы 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), чтобы контролировать отображение различий.Достаточна ли временная лицензия для тестирования?
Временная лицензия со страницы страница временной лицензии подходит для разработки и тестирования. Для развертывания в продакшн приобретите полную лицензию.
