我正在尝试编写一个测试来检查我在代码中创建的 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保证相同的实例?或者有另一种解决这个问题的方法吗?