2
我正在使用poi生成docx file.file在open office中正確打開。但在ms word中出現錯誤「文本/ xml聲明可能只發生在輸入/word/footer1.xml「。當我提取我的生成的docx文件,我發現我用下面的代碼MS Word中的Apache POI頁腳問題
<?xml version="1.0" encoding="UTF-8"?>
<w:ftr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:r>
<w:rPr>
<w:color w:val="D3D3D3"/>
</w:rPr>
<w:t>
Section 1Page1
</w:t>
</w:r>
</w:p>
</w:ftr>
<?xml version="1.0" encoding="UTF-8"?>
<w:ftr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:r>
<w:rPr>
<w:color w:val="D3D3D3"/>
</w:rPr>
<w:t>
Section 1Page1
</w:t>
</w:r>
</w:p>
</w:ftr>
/word/footer1.xml我得到了在這個XML代碼生成的兩倍,這就是爲什麼微軟Word是給那個error.What我不得到什麼導致它生成兩次或如何能夠處理this.My POI代碼頁腳是如下
CTP ctp = CTP.Factory.newInstance();
CTR ctr = ctp.addNewR();
CTRPr rpr = ctr.addNewRPr();
rpr.setColor(CTColor.Factory.newInstance());
style = new WordStyle();
style.setColor("D3D3D3");
ctr.getRPr().getColor().setVal(style.getColor());
CTText text = ctr.addNewT();
text.setStringValue(parentLevelTitle+" Page 1");
XWPFParagraph codePara = new XWPFParagraph(ctp, document);
XWPFParagraph[] newparagraphs = new XWPFParagraph[1];
newparagraphs[0] = codePara;
CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
CTPageMar ctPageMar = sectPr.addNewPgMar();
ctPageMar.setLeft(BigInteger.valueOf(720L));
ctPageMar.setTop(BigInteger.valueOf(1440L));
ctPageMar.setRight(BigInteger.valueOf(720L));
ctPageMar.setBottom(BigInteger.valueOf(1440L));
XWPFHeaderFooterPolicy headerFooterPolicy = new XWPFHeaderFooterPolicy(document, sectPr);
headerFooterPolicy.createFooter(STHdrFtr.DEFAULT, newparagraphs);
如果我刪除從代碼中它得到MS-Word成功打開createFooter聲明。 任何人都可以建議如何解決這個問題嗎?
你確定你還沒有定義頁腳嗎? – Gagravarr
是的,我是給你我的身份證,我會給你發出代碼。 – Manish