Есть ли способ сравнить содержимое (включая формат) 2 файлов Excel с SpreadsheetLight?
У меня есть два файла Excel, которые оба сгенерированы с SpreadsheetLight. Что мне нужно сделать, это сравнить, если оба они идентичны или нет.
С текстовыми файлами это было бы легко, так как я просто сгенерировал бы сумму MD5 для каждого файла, но так как это файлы.xlsx, это не так просто, так как каждое генерирование файла приводит к немного другому файлу. Из того, что я уже видел, есть решение для сравнения самого содержимого двух файлов Excel: сравнение двух файлов Excel на предмет различий
Так что же отличается от основного вопроса и ответа на этот вопрос:
- Я использую SpreadsheetLight для создания обоих файлов
- Мне нужно не только сравнить данные внутри файлов, но и все форматы, ...
Итак, мой вопрос: есть ли другой способ сравнить 2 файла Excel (особенно с SpreadsheetLight задействовать)?
1 ответ
Я не думаю, что простой вложенный for
цикл сделает свое дело:
bool AreSheetsIdentical(SLDocument doc1, SLDocument doc2)
{
SLWorksheetStatistics stats1 = doc1.GetWorksheetStatistics();
SLWorksheetStatistics stats2 = doc2.GetWorksheetStatistics();
for (int i = 1; i < stats1.EndColumnIndex; i++)
{
for (int j = 1; j < stats1.EndRowIndex; j++)
{
if (doc1.GetCellValueAsString(i, j) != doc2.GetCellValueAsString(i, j))
return false;
if (doc1.GetCellStyle(i, j) != doc2.GetCellStyle(i, j))
return false;
}
}
return true;
}
Вы также можете сделать некоторые предварительные проверки там, используя GetWorksheetStatistics
так как если они не имеют одинаковое количество строк и столбцов, они, очевидно, не идентичны.