Используя Apache POI HSSF, мы можем создать файл xls, подобный этому
private void write(HSSFWorkbook workbook) {
POIFSFileSystem filesystem = new POIFSFileSystem();
filesystem.createDocument(new ByteArrayInputStream(workbook.getBytes()),
"Workbook");
FileOutputStream stream = new FileOutputStream("test.xls");
filesystem.writeFilesystem(stream);
}
Точно так же, как я могу написать с XSSFWorkbook
?У него нет метода getBytes()
.
Я пытался создать ByteArrayInputStream
из XSSFWorkbook
следующим образом -
ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos); //XSSFWorkbook here
ByteArrayInputStream bias = new ByteArrayInputStream(baos.toByteArray());
Но созданный файл xlsx был поврежден.Как я могу записать книгу на диск, используя POIFSFileSystem
?
Тот же XSSFWorkbook
был успешно записан, когда я это сделал -
FileOutputStream stream = new FileOutputStream("test.xlsx");
workbook.write(stream);
Когда я извлек и сравнил файлы xlsxРазницы не было.Тем не менее, когда я выполняю простое сравнение текста непосредственно в файлах xlsx (без извлечения), различия в байтах незначительны.
Поэтому проблема должна заключаться в методах createDocument()
и / или writeFilesystem()
POIFSFileSystem
.Может кто-нибудь дать мне знать, как писать XSSFWorkbook
, используя POIFSFileSystem
?