Используя 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
?