本文介紹了為xlsx ApachePOI使用Java臨時文件的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
.hi,我正在嘗試創(chuàng)建一個臨時的.xlsx文件,并使用ApachePOI對其進行寫入。我正在獲取用于創(chuàng)建工作簿的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);
}
//...
如果我使用真實的文件,它工作得很好。但對于臨時文件,它不起作用。請幫我拿一下這個。謝謝
推薦答案
創(chuàng)建新文件時,首先不需要文件,只需從新工作簿開始:
Workbook wb = new XSSFWorkbook();
,然后使用API填充它。最后,您可以通過
將其寫入新文件
try (OutputStream stream = new FileOutputStream(file)) {
wb.write(stream);
}
這篇關(guān)于為xlsx ApachePOI使用Java臨時文件的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,