2017-03-06 50 views
0

我一直在使用下面的代碼追加存在的內容的Word文檔的嘗試:文本,追加是不是在Java代碼的Word文檔文件(.docx)發生

XWPFDocument doc=new XWPFDocument(); 
    XWPFParagraph para=doc.createParagraph(); 
    XWPFRun run=para.createRun(); 
    File f=new File("Text.docx"); 
    FileOutputStream fos=new FileOutputStream(f, true); 
    run.setText("Append The value please"); 
    doc.write(fos); 

但是,程序,當完成後,我試圖打開該文件,它說「很抱歉,我們無法打開文件。我們發現它的內容存在問題」。

我使用下面罐子: 1. POI 3.12 2. POI -ooxml-3.10.1 3. POI暫存器-3.15 4. OOXML-架構 - 1.1 5.的xmlbeans-2.3.0 6. Dom4j-1.1

這是什麼原因&什麼可能是避免這種解決方案?

+0

因爲忘記關閉文檔 - 這裏指。 doc.close()寫完之後 – gvlachakis

回答

2

這是因爲你沒有使用Apache POI打開文件。

使用XWPFDocument打開Word文檔以追加數據。代碼是Pfb。

XWPFDocument doc = new XWPFDocument(OPCPackage.open(fileLocationPath + "Document.doc")); 


    List<XWPFParagraph> paragraphs = doc.getParagraphs(); 


    XWPFParagraph paragraph = paragraphs.get(paragraphs.size() - 1); 

    XWPFRun runText = paragraph.createRun(); 

//if you want to add text 
    runText.setText("appending here"); 

//if you want to add image 
    runText.addPicture(java.io.InputStream pictureData, int pictureType, java.lang.String filename, int width, int height) 



    try (FileOutputStream out = new FileOutputStream(fileLocationPath + "Document.doc")) { 
      doc.write(out); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

,如果你想添加圖像 - 使用XWPFRun的AddPicture方法 - 也許Apache POI XWPFRun Add Picture

+0

'doc.commit();' - >'錯誤:commit()保護了XWPFDocument中的訪問權限@ –

+0

@AxelRichter,謝謝注意,我已經編輯過使用fileoutputstream進行保存。 –

+0

謝謝。它正在爲文本工作,但我嘗試附加任何圖像時遇到同樣的錯誤。儘管新文件的大小增加了。你可以請你提供意見嗎? –