如何创建两个具有相同字节的 XSSFWorkbook 对象

cpp*_*ner 6 java excel xssf

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

一种想法是转换为字节数组并检查字节数组是否相等。不幸的是,我在使用这种方法时遇到了麻烦,因为 excel 格式似乎包含文件创建时间的时间戳。

例如,此代码打印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));
  }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道解决这个问题的方法。是否可以创建XSSFWorkbook保证相同的实例?或者有另一种解决这个问题的方法吗?