From c58cea3129092ef0c56af0c06447618ac7b6ac9e Mon Sep 17 00:00:00 2001 From: jueyue Date: Sat, 3 Jan 2015 17:06:36 +0800 Subject: [PATCH] =?UTF-8?q?word=20=E6=A8=A1=E6=9D=BF=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E9=A1=B5=E7=9C=89=E5=92=8C=E9=A1=B5?= =?UTF-8?q?=E8=84=9A=E7=9A=84=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poi/word/parse/ParseWord07.java | 28 +++++++++++++++++- easypoi-test/.classpath | 11 ++----- .../poi/word/WordExportUtilTest.java | 4 ++- .../jeecgframework/poi/word/doc/Simple.docx | Bin 12502 -> 15188 bytes 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/ParseWord07.java b/easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/ParseWord07.java index 0b2f97a..958a92a 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/ParseWord07.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/word/parse/ParseWord07.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Map; import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFFooter; +import org.apache.poi.xwpf.usermodel.XWPFHeader; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFTable; @@ -42,6 +44,7 @@ public class ParseWord07 { * @param currentRun * @throws Exception */ + @SuppressWarnings("deprecation") private void addAnImage(WordImageEntity obj, XWPFRun currentRun) throws Exception { Object[] isAndType = POIPublicUtil.getIsAndType(obj); String picId; @@ -239,7 +242,9 @@ public class ParseWord07 { private void parseWordSetValue(MyXWPFDocument doc, Map map) throws Exception { // 第一步解析文档 parseAllParagraphic(doc.getParagraphs(), map); - // 第二步解析所有表格 + // 第二步解析页眉,页脚 + parseHeaderAndFoot(doc, map); + // 第三步解析所有表格 XWPFTable table; Iterator itTable = doc.getTablesIterator(); while (itTable.hasNext()) { @@ -251,4 +256,25 @@ public class ParseWord07 { } + /** + * 解析页眉和页脚 + * @param doc + * @param map + * @throws Exception + */ + private void parseHeaderAndFoot(MyXWPFDocument doc, Map map) throws Exception { + List headerList = doc.getHeaderList(); + for (XWPFHeader xwpfHeader : headerList) { + for (int i = 0; i < xwpfHeader.getListParagraph().size(); i++) { + parseThisParagraph(xwpfHeader.getListParagraph().get(i), map); + } + } + List footerList = doc.getFooterList(); + for (XWPFFooter xwpfFooter : footerList) { + for (int i = 0; i < xwpfFooter.getListParagraph().size(); i++) { + parseThisParagraph(xwpfFooter.getListParagraph().get(i), map); + } + } + + } } diff --git a/easypoi-test/.classpath b/easypoi-test/.classpath index f32149e..cd3f839 100644 --- a/easypoi-test/.classpath +++ b/easypoi-test/.classpath @@ -1,22 +1,17 @@ - + - + + - - - - - - diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/word/WordExportUtilTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/word/WordExportUtilTest.java index 4f38287..af4292a 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/word/WordExportUtilTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/word/WordExportUtilTest.java @@ -17,7 +17,7 @@ public class WordExportUtilTest { /** * 简单导出包含图片 */ - @Test + //@Test public void imageWordExport() { Map map = new HashMap(); map.put("department", "Jeecg"); @@ -49,6 +49,8 @@ public class WordExportUtilTest { map.put("department", "Jeecg"); map.put("person", "JueYue"); map.put("time", format.format(new Date())); + map.put("me","JueYue"); + map.put("date", "2015-01-03"); try { XWPFDocument doc = WordExportUtil.exportWord07( "org/jeecgframework/poi/word/doc/Simple.docx", map); diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/word/doc/Simple.docx b/easypoi-test/src/main/java/org/jeecgframework/poi/word/doc/Simple.docx index 309ca8b22f7473deb317058779c0d1aa5e03bc68..93fbe7b35cba9cb485de6dd12ca48fda23db8d30 100644 GIT binary patch delta 10036 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 F{tuA9k=g(N delta 7320 zcmZu$WmFwa(!RL6d(c2|y*R<$B{&3^ixZq&Jh)vvxVr=o7J|D6_u%dX{YZA-&7M79 z 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 L`Qq`J`8W4}@8_zR