2015-02-11 2 views
0

У меня есть два файла excel, которые генерируются с помощью SpreadsheetLight. Что мне нужно сделать, так это сравнить, если оба они идентичны или нет.Есть ли способ сравнить содержимое (включая формат) двух файлов excel с SpreadsheetLight?

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

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

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

Так что мой вопрос есть: есть ли другой способ есть сравнить 2 файлов Excel (особенно с SpreadsheetLight invvde)?

ответ

0

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