POI 追加寫入word文件,POI如何寫入word文件(親測有效),POI報錯Fail to save: an error occurs while saving the package
阿新 • • 發佈:2018-12-20
一、POI寫入word文件
首先參考W3Shool的教程(上述快速指南)的“Apache POI Word - 文件”一節,對於建立文件和寫入段落都有清晰的闡釋。我不再贅述。但是其寫入段落的方式每次都會覆蓋曾經寫入的內容。那麼經過我探索一番要這麼處理...
二、POI追加寫入word文件
W3SHOOL教程段落覆蓋是因為每次都會重建已經存在的檔案
FileOutputStream out = new FileOutputStream(
new File("createparagraph.docx"));
所以你需要做的就是儲存檔案的引用,多次使用即可,注意事項也已經註釋好,大家自行閱讀。
public class WebPageHelper { private static XWPFDocument document; private static FileOutputStream out; private static String OUTPATH = "X:/XXXX/XXXXX/XXXX"; public static File createDoc(String filePath) throws IOException { File file = new File(filePath); document = new XWPFDocument(); /*document物件可以只建立一次*/ out = new FileOutputStream(file); System.out.println("created successfully"); return file; /*同一個file的引用,要多次使用才不會被覆蓋*/ } public static void writePara(String paraStr, File file) throws IOException { /*對於每個new的OutputStream物件,只能被document.write()執行一次儲存操作*/ /*所以每次寫入新的段落都要新建OutputStream,否則執行第二次會報錯*/ out = new FileOutputStream(file); XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); run.setText(paraStr); /*run.setText()是預設追加寫入資料的,不用設定什麼*/ document.write(out); /*儲存修改*/ out.close(); /*記得關閉資源*/ System.out.println("write successful"); } }
三、報錯解決
對於每個new的OutputStream物件,只能被document.write()執行一次儲存操作,所以每次寫入新的段落都要新建OutputStream,否則執行第二次會報錯,程式碼見文中。
四、依賴包下載
在maven repository搜尋POI,找一個使用人數多的版本下載即可,也可以自行配置gradle。