【发布时间】:2011-07-05 18:26:31
【问题描述】:
使用 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() 方法。
我试图像这样从XSSFWorkbook 创建ByteArrayInputStream -
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 文件进行纯文本比较(不提取)时,字节几乎没有差异。
所以问题应该出在POIFSFileSystem 的createDocument() 和/或writeFilesystem() 方法中。有人可以告诉我如何使用POIFSFileSystem 写XSSFWorkbook 吗?
【问题讨论】:
标签: apache-poi xssf