如何在java中从工作簿对象获取inputStream
上载文件时,我将输入流传递到工作簿。现在,我想在另一种方法中使用工作簿中的如何在java中从工作簿对象获取inputStream,java,excel,apache-poi,Java,Excel,Apache Poi,上载文件时,我将输入流传递到工作簿。现在,我想在另一种方法中使用工作簿中的InputStream,比如save,我将文件InputStream保存到DB中。这是我的密码 public void FileUpload(FileUploadEvent event) throws ParseException { UploadedFile item = event.getUploadedFile(); Workbook workbook = org.apache.poi.ss.use
InputStream
,比如save,我将文件InputStream
保存到DB中。这是我的密码
public void FileUpload(FileUploadEvent event) throws ParseException {
UploadedFile item = event.getUploadedFile();
Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(item.getInputStream());
}
现在我想将工作簿对象作为实例变量并传递给另一个方法,如下所示
public String save() throws SQLException, IOException{
fileId = dao.savefile(workbook,fileName);
}
在我的savefile方法中
InputStream inptest= **workbook.getStream**
ps.setBinaryStream(2,fin,fin.available());
因此,
inptest
变量接受我想从工作簿中获取的InputStream
。如果您试图将工作簿对象保存到文件中,有一种方法可以接收OutputStream。保存到文件可以通过以下步骤完成:
FileOutputStream fos = new FileOutputStream("path/to/file/[filename]");
workbook.write(fos);
fos.close();
听起来您想要的是一种将InputStream用于多种用途的方法:
public void FileUpload(FileUploadEvent event) throws ParseException {
UploadedFile item = event.getUploadedFile();
InputStream originalInputStream = item.getInputStream();
byte[] buffer = IOUtils.toByteArray(originalInputStream);
InputStream is1 = new ByteArrayInputStream(buffer);
InputStream is2 = new ByteArrayInputStream(buffer);
Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(is1);
}
InputStream inptest = is2;
ps.setBinaryStream(2,fin,fin.available());
注意:这用于IOUtils。什么库和包是
工作簿
?我使用的是poi-ooxml-3.9.jar。具体问题是什么?如何从工作簿读取输入流。它应该可以工作,但这取决于您尝试执行的操作。您可能还需要关闭FileOutputStream以显示文件。我想你不清楚我的问题。我想从工作簿中读取inputstream,所以让我们假设,根据我写入工作簿的代码,那么如何从中获取inputstream。请告诉我是否有这样的方法。您的意思是从工作簿对象检索原始InputStream吗?据我所知,没有办法这样做。如果要将其保留到savefile方法,还应将其添加为实例变量。是从工作簿对象检索原始InputStream。无论如何,谢谢你的时间。很高兴它起作用了!如果某个解决方案对您有效,这里的常见礼仪是单击复选标记将答案标记为已接受。看见