1

我有两个用 SpreadsheetLight 生成的 excel 文件。我需要做的是比较两者是否相同。

对于文本文件,这很容易,因为我只会在每个文件上生成一个 MD5 和,但由于这些是 .xlsx 文件,这并不像每个文件生成都会导致文件略有不同那样简单。从我已经看到的情况来看,有一个解决方案可以基本上比较 2 个 excel 文件的内容本身:比较两个 excel 文件的差异

那么与该问题中的基本问题和答案有什么不同:

  1. 我正在使用 SpreadsheetLight 生成两个文件
  2. 我不仅需要比较文件中的数据,还需要比较所有格式,...

所以我的问题是:有没有其他方法可以比较 2 个 excel 文件(尤其是 SpreadsheetLight 涉及)?

4

1 回答 1

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因为如果它们的行数和列数不同,它们显然是不相同的。

于 2015-02-19T00:41:24.440 回答