Excelファイルを作成するテストをJUnit
で実行していて、これをベンチマークファイルと比較します。Java POI - 同じパラメータを使用してExcelファイルを作成すると、異なるファイルが生成される
しかし、テストするとき、両方のファイルが等しいかどうかを比較すると常にfalseが返されます。だから私は、同じファイルを作成する非常にサンプルコードを試してみましたが、別の場所へ:
コード
@Test
public void testWrite() throws SQLException, IOException
{
File createdFile = folder.newFile("myfile.xlsx");
File createdFile2 = folder.newFile("myfile2.xlsx");
// Same file created but using two different file names
FormFile tester = new FormFile(createdFile, "Harvard");
tester.write();
tester = new FormFile(createdFile2, "Harvard");
tester.write();
// Always return false
assertEquals(FileUtils.contentEquals(createdFile, createdFile2), true);
}
public class FormFile
{
private File file;
private String schoolName;
public FormFile(File file, String schoolName)
{
this.file = file;
this.schoolName = schoolName;
}
workbook = POIExcelFileProcessor.createWorkbook(FormFileTest.class.getResourceAsStream(FORM_FILE_TEMPLATE_FILENAME));
// Code to modify the workbook
POIExcelFileProcessor.writeWorkbook(workbook, file);
}
public class POIExcelFileProcessor
{
public static Workbook createWorkbook(InputStream inputStream)
{
Workbook workbook = null;
try
{
workbook = WorkbookFactory.create(inputStream);
}
catch (Exception e)
{
e.printStackTrace();
}
return workbook;
}
public static void writeWorkbook(Workbook workbook, File outputFile)
{
try
{
FileOutputStream fileOut = new FileOutputStream(outputFile);
workbook.write(fileOut);
fileOut.flush();
fileOut.close();
workbook.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
であっても(ここでは、文字列「ハーバード」)と同じパラメータを使用して、両方のファイル内容はまだ同じではなく、なぜ私は考えていません。
ありがとうございます!
なぜいくつかのExcelファイルは、同じコンテンツを持つ別のExcelファイルと同等の「ビット単位」であると思いますか? –
私はプログラミングが比較的新しいですが、私は考えることができます:それはなぜでしょうか? Excelはタイムスタンプやその他の関連しない文字のようないくつかの文字を追加しますか? –
私はExcelのファイルを使用していますが、Microsoftからかなり閉鎖された形式であることを知っています。私はPOIファイルを読み込み、セル(+ヘッダフッタ形式など)でコンテンツセルを比較します。 –