在Apache poi中的equals()方法

我需要比较表格,我只注意到类中没有equals()方法。 它扩展了Iterable,但是如果我有一个自定义的Pojo,并且使用/ override一个equals()方法,它可能会失败。

这是否意味着我需要做一个定制的“等于”遍历所有的行/单元格?

为什么没有工作表有一个equals()? 谢谢

(来源: https : //poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html )

你必须自己实现它。

我的猜测是equlas方法没有实现,因为:

  • 这可能是昂贵的(如@GhostCatbuild议)和
  • 它应该如何实施并不是100%清楚的:
    • 有人只是想比较表的名称(地图查找等),有人想比较所有单元格。
    • 而在比较单元格时,有人希望将简单的值和从公式中得出的值区分开来,而有人则不在乎。
    • 有人认为一个空单元格和一个未定义的单元格是平等的,而另外一个则没有。
    • 等等

你可以使用simple-excel来做到这一点(请findGIT项目)。 请在他们的博客中find一个例子:

 Workbook actual = new HSSFWorkbook(...); Workbook expected = new HSSFWorkbook(...); assertThat(actual, sameWorkbook(expected)); 

使用这个,你会得到有用的信息,如果两张表不相同:

 java.lang.AssertionError: Expected: entire workbook to be equal but: cell at "C14" contained <"bananas"> expected <nothing>, cell at "C15" contained <"£1,850,000"> expected <"£1,850,000.00">, cell at "D16" contained <nothing> expected <"Tue Sep 04 06:30:00">