我用在線code的一個簡單的代碼,我能夠在for循環中的代碼中調用該方法並傳遞它的數據和行號。該文件已正確創建,文件的大小(在刷新我的文件資源管理器後)會在每次插入時發生更改,但是當我完成後,我打開文件,我只能看到第一行,然後關閉它的大小文件從1.5MB減少到5個字節。我在notepad ++中打開了1.5 MB文件(當然,它是用字節字符打開的)我實際上可以看到除第一行以外我已寫入文件的數據,所有的行都在那裏。但是當我在Excel中打開它並沒有。由poi API創建的Excel文件:數據在那裏,但只有一行是可見的?
有沒有我在這裏失蹤的東西。在每次插入Excel文件我這樣做:
fileOutputStream = new FileOutputStream(fileName,true);
sampleWorkbook.write(fileOutputStream);
,之後在try塊的finally塊:
finally {
/**
* Close the fileOutputStream.
*/
try {
if (fileOutputStream != null) {
fileOutputStream.flush();
fileOutputStream.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
但如果文件大小在變化,我可以查看記事本中的數據爲什麼excel會將除第一個以外的行作爲臨時數據處理(這正是我所假設的,因爲它在關閉文件時只恢復爲5個字節)?這裏有什麼問題?
感謝您的幫助,提前。
syed。
關於您的'finally {...}塊的小樣式註釋:無需調用'flush()',它在'close()'過程中被調用。另外,如果你使用Java 7,你可以在這個塊流自動關閉之後寫'try(FileOutputStream fos = new FileOutputStream(fileName,true)){/ * code here * /}'。 –
@FrozenSpider:不錯...我知道Java 7很酷(因爲Java 6開發人員實際上可以使用kewl for java大聲笑..),但我們仍然在6。願意在7日工作。 – sarmahdi