如何用相同的字节创build两个XSSFWorkbook对象

我正在尝试编写一个testing来检查我在代码中创build的Excel文件是否与资源文件(格式相同,单元格内容相同)完全相同。

一个想法是转换为字节数组,并检查字节数组是否相等。 不幸的是我有这种方法的麻烦,因为Excel格式似乎包括文件创build时间的时间戳。

例如,这个代码打印false

 import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.ByteArrayOutputStream; import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { Workbook workbook1 = new XSSFWorkbook(); ByteArrayOutputStream baos1 = new ByteArrayOutputStream(); workbook1.write(baos1); byte[] bytes1 = baos1.toByteArray(); Thread.sleep(1000); Workbook workbook2 = new XSSFWorkbook(); ByteArrayOutputStream baos2 = new ByteArrayOutputStream(); workbook2.write(baos2); byte[] bytes2 = baos2.toByteArray(); System.out.println(Arrays.toString(bytes1)); System.out.println(Arrays.toString(bytes2)); System.out.println(Arrays.equals(bytes1, bytes2)); } } 

有没有人知道解决这个问题的方法。 是否有可能创buildXSSFWorkbook实例保证是相同的? 或者是有另一种解决这个问题的方法?