为xlsx ApachePOI使用Java临时文件

原学程将引见为xlsx ApachePOI应用Java暂时文件的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

为xlsx ApachePOI使用Java临时文件 教程 第1张

成绩描写

.hi,我正在测验考试创立1个暂时的.xlsx文件,并应用ApachePOI对于其停止写进。我正在夺取用于创立任务簿的EmptyFileException。代码以下:

public class Writer{
File file;
public File Write(List<FormData> l, Class elementClass)
{

 try {//create temp fiele here
  file = File.createTempFile(elementClass.getSimpleName(),".xlsx");
 } catch (IOException ex) {
  Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex);
 }
 XSSFWorkbook workbook;
 XSSFSheet sheet;
 if (file.exists()) {
  FileInputStream inputStream;
  try {
inputStream = new FileInputStream(file);
  } catch (FileNotFoundException ex) {
throw new AspirinException(AspirinException.Type.INTERNAL_ERROR);
  }
  try {// this line gets error//
workbook = (XSSFWorkbook) WorkbookFactory.create(inputStream);
  } catch (IOException | InvalidFormatException | EncryptedDocumentException ex) {
throw new AspirinException(AspirinException.Type.INTERNAL_ERROR);
  }

  //...

假如我应用真虚的文件,它任务患上很佳。但是关于暂时文件,它没有起感化。请助我拿1下这个。感谢

推举谜底

创立新文件时,起首没有须要文件,只需重新任务簿开端:

Workbook wb = new XSSFWorkbook();

,而后应用API填充它。最初,您不妨经由过程

将其写进新文件

try (OutputStream stream = new FileOutputStream(file)) {
 wb.write(stream);
}

佳了闭于为xlsx ApachePOI应用Java暂时文件的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。