我正在创建一个excel文件:
public byte[] createReport() {
List<ExportModel> exportModels = export.computeExportModels();
HSSFWorkbook workbook = excelCreator.createWorkbook(exportModels);
// return workbook.getBytes();
return getByteArray(workbook);
}
private byte[] getByteArray(HSSFWorkbook workbook) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
workbook.write(bos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return bos.toByteArray();
}虽然这确实有效,但它不适用于
workbook.getBytes();如果我试图打开生成的xls-文件,Excel就会崩溃而无法打开它。你有这方面的经验吗?
发布于 2015-01-18 23:28:27
来自Apache用于HSSFWorkbook.getBytes()
公众byte[] getBytes() 方法getBytes -只获取XLS文件的HSSF部分的字节。使用它自己构建一个POI POIFSFileSystem。
Excel .xls文件必须包装在外部OLE2容器中(如由POIFSFileSystem生成的)。因此,您要么需要自己完成所有这些工作,要么只需要调用HSSFWorkbook.write(OutputStream) (作为javadocs解释)来完成这一切。
如果您想要写出一个HSSFWorkbook,并获取它的字节,那么除非您想做一些非常特殊的事情,只需做:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);
bytes[] excelFile = baos.toByteArray();https://stackoverflow.com/questions/27985337
复制相似问题