+-

我使用jxl库创建了一个excel文件.代码工作正常,但唯一的问题是,每次从服务的动态值构建excel文件时,excel内容都会覆盖到test.xls上,如下所示.有没有办法在内存中构建一个excel并传递字节以便下载它而不是创建一个外部文件(“test.xls”)
File file = new File("test.xls");
WritableWorkbook workbook = Workbook.createWorkbook(file);
:
:
:
:
InputStream in = new FileInputStream(file);
if (in == null) {
out.close();
}
else
{
byte[] buffer = new byte[4096];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.flush();
in.close();
out.close();
}
任何人都可以帮我这个
最佳答案
将ByteArrayOutputStream与
Workbook.createWorkbook(OutputStream os)方法结合使用可在内存中创建工作簿,并将创建的字节数组转储到所需的任何输出流.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
WritableWorkbook workbook = Workbook.createWorkbook(baos);
// ...
workbook.close();
out.write(baos.toByteArray());
out.flush();
out.close();
或者,您可以在不使用中间字节数组的情况下即时执行此操作:
WritableWorkbook workbook = Workbook.createWorkbook(out);
// ...
workbook.close();
out.flush();
out.close();
此方法可能是优选的,因为JXL无论如何都将工作簿保留在内存中,并且仅在工作簿关闭时将其刷新到输出流.
点击查看更多相关文章
转载注明原文:使用java在内存中创建一个excel文件,并作为字节传递以进行下载 - 乐贴网