Есть ли способ сравнить содержимое (включая формат) 2 файлов Excel с SpreadsheetLight?

У меня есть два файла Excel, которые оба сгенерированы с SpreadsheetLight. Что мне нужно сделать, это сравнить, если оба они идентичны или нет.

С текстовыми файлами это было бы легко, так как я просто сгенерировал бы сумму MD5 для каждого файла, но так как это файлы.xlsx, это не так просто, так как каждое генерирование файла приводит к немного другому файлу. Из того, что я уже видел, есть решение для сравнения самого содержимого двух файлов Excel: сравнение двух файлов Excel на предмет различий

Так что же отличается от основного вопроса и ответа на этот вопрос:

  1. Я использую SpreadsheetLight для создания обоих файлов
  2. Мне нужно не только сравнить данные внутри файлов, но и все форматы, ...

Итак, мой вопрос: есть ли другой способ сравнить 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 так как если они не имеют одинаковое количество строк и столбцов, они, очевидно, не идентичны.

Другие вопросы по тегам