精华内容
下载资源
问答
  • 所以想到将freemarker生成xml格式word转成标准格式的word在转成PDF。 现在不知道怎么将xml格式word转成标准格式的word。 或者如何将xml格式word转为标准的word格式 求帮忙啊!谢谢
  • xml格式word文档解析器

    2018-08-09 15:22:50
    自己编写的xml格式word文档分析器,完成了普通书签替换,表格书签替换,表格循环,嵌套循环数据生成表格等功能。请仔细阅读文件中“xml格式word解析器1 .md”
  • word文件另存为xml格式,修改后缀名为ftl,生成ftl文件模板,再通过Freemaker框架,填充数据生成定制化的Word文件。 通过Word模板创建ftl模板,注意模板的格式,尤其是序号是否是自动生成,不然,填充数据时,就...

    1.场景

    word文件另存为xml格式,修改后缀名为ftl,生成ftl文件模板,再通过Freemaker框架,填充数据生成定制化的Word文件。

    通过Word模板创建ftl模板,注意模板的格式,尤其是序号是否是自动生成,不然,填充数据时,就需要自己填充序号。

    后期填充数据,生成word后,发现模板有问题,再重新改xml,或重新生成,工作量不小。

    2.问题

    1)根据ftl模板生成的word内表格列宽不固定,超出页面边界

    在表格位置新增红色部分

    <w:tbl>

           <w:tblPr>
                    <w:tblOverlap w:val="never"/>
                    <w:tblLayout w:type="fixed"/>

            </w:tblPr>

    </w:tbl>

     

    备注:

    根据实际项目遇到的问题,记录一下解决办法。

     

    展开全文
  • 如下代码可以实现使用Java的POI进行Word文档的解析并生成XML格式文档功能

        如下代码可以实现使用Java的POI进行Word文档的解析并生成XML格式文档功能,此代码编译通过,但是运行有问题,读者可以亲自试试并能否改bug:


    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.nio.charset.Charset;
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.model.StyleDescription;
    import org.apache.poi.hwpf.model.StyleSheet;
    import org.apache.poi.hwpf.usermodel.CharacterRun;
    import org.apache.poi.hwpf.usermodel.Paragraph;
    import org.apache.poi.hwpf.usermodel.Range;
    
    public final class Word2Forrest {
    	Writer _out;
    	HWPFDocument _doc;
    
    	@SuppressWarnings("unused")
    	public Word2Forrest(HWPFDocument doc, OutputStream stream) throws IOException {
    		OutputStreamWriter out = new OutputStreamWriter(stream, Charset.forName("UTF-8"));
    		_out = out;
    		_doc = doc;
    
    		init();
    		openDocument();
    		openBody();
    
    		Range r = doc.getRange();
    		StyleSheet styleSheet = doc.getStyleSheet();
    
    		int sectionLevel = 0;
    		int lenParagraph = r.numParagraphs();
    		boolean inCode = false;
    		for (int x = 0; x < lenParagraph; x++) {
    			Paragraph p = r.getParagraph(x);
    
    			String text = p.text();
    			if (text.trim().length() == 0) {
    				continue;
    			}
    			StyleDescription paragraphStyle = styleSheet.getStyleDescription(p.getStyleIndex());
    			String styleName = paragraphStyle.getName();
    			if (styleName.startsWith("Heading")) {
    				if (inCode) {
    					closeSource();
    					inCode = false;
    				}
    
    				int headerLevel = Integer.parseInt(styleName.substring(8));
    				if (headerLevel > sectionLevel) {
    					openSection();
    				} else {
    					for (int y = 0; y < (sectionLevel - headerLevel) + 1; y++) {
    						closeSection();
    					}
    					openSection();
    				}
    				sectionLevel = headerLevel;
    				openTitle();
    				System.out.println("++++++" + p.text());
    				writePlainText(text);
    				closeTitle();
    			} else {
    				int cruns = p.numCharacterRuns();
    				CharacterRun run = p.getCharacterRun(0);
    				String fontName = run.getFontName();
    				if (fontName.startsWith("Courier")) {
    					if (!inCode) {
    						openSource();
    						inCode = true;
    					}
    					System.out.println("------" + p.text());
    					writePlainText(p.text());
    				} else {
    					if (inCode) {
    						inCode = false;
    						closeSource();
    					}
    					openParagraph();
    					System.out.println("******" + p.text());
    					writePlainText(p.text());
    					closeParagraph();
    				}
    			}
    		}
    		for (int x = 0; x < sectionLevel; x++) {
    			closeSection();
    		}
    		closeBody();
    		closeDocument();
    		_out.flush();
    
    	}
    
    	public void init() throws IOException {
    		_out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
    		_out.write(
    				"<!DOCTYPE document PUBLIC \"-//APACHE//DTD Documentation V1.1//EN\" \"./dtd/document-v11.dtd\">\r\n");
    	}
    
    	public void openDocument() throws IOException {
    		_out.write("<document>\r\n");
    	}
    
    	public void closeDocument() throws IOException {
    		_out.write("</document>\r\n");
    	}
    
    	public void openBody() throws IOException {
    		_out.write("<body>\r\n");
    	}
    
    	public void closeBody() throws IOException {
    		_out.write("</body>\r\n");
    	}
    
    	public void openSection() throws IOException {
    		_out.write("<section>");
    
    	}
    
    	public void closeSection() throws IOException {
    		_out.write("</section>");
    
    	}
    
    	public void openTitle() throws IOException {
    		_out.write("<title>");
    	}
    
    	public void closeTitle() throws IOException {
    		_out.write("</title>");
    	}
    
    	public void writePlainText(String text) throws IOException {
    		_out.write(text);
    	}
    
    	public void openParagraph() throws IOException {
    		_out.write("<p>");
    	}
    
    	public void closeParagraph() throws IOException {
    		_out.write("</p>");
    	}
    
    	public void openSource() throws IOException {
    		_out.write("<source><![CDATA[");
    	}
    
    	public void closeSource() throws IOException {
    		_out.write("]]></source>");
    	}
    
    	public static void main(String[] args) throws IOException {
    		InputStream is = new FileInputStream("D:/QMDownload/hwpftest.doc");
    		OutputStream out = new FileOutputStream("D:/QMDownload/test.xml");
    		try {
    			new Word2Forrest(new HWPFDocument(is), out);
    		} finally {
    			out.close();
    			is.close();
    		}
    	}
    }


    展开全文
  • Freemark+Xml生成Word文档

    2018-07-02 18:06:33
    使用Freemark来生成Word文档,是十分方便的...1、在Word文档中设置好模板之后,另存为为.xml格式 2,将.xml的文件名修改为.ftl的格式,修改好的如下所示 <?xml version =“1.0”encoding =“utf-8”?>...

    使用Freemark来生成的Word文档,是十分方便的,以前常使用POI来操作的Word文档,但设置样式等存在不少的问题;而使用Freemark则相对简单,主要有一下几个步骤:

    1、在Word文档中设置好模板之后,另存为为.xml格式

    2,将.xml的文件名修改为.ftl的格式,修改好的如下所示

     

    <?xml version =“1.0”encoding =“utf-8”?>
    <?mso-application progid =“Word.Document”?>


    <w:wordDocument xmlns:w =“http://schemas.microsoft.com/ office / word / 2003 / wordml“xmlns:v =”urn:schemas-microsoft-com:vml“xmlns:w10 =”urn:schemas-microsoft-com:office:word“xmlns:sl =”http:// schemas .microsoft.com / schemaLibrary / 2003 / core“xmlns:aml =”http://schemas.microsoft.com/aml/2001/core“xmlns:wx =”http://schemas.microsoft.com/office/word / 2003 / auxHint“xmlns:o =”urn:schemas-microsoft-com:office:office“xmlns:dt =”uuid:C2F41010-65B3-11d1-A29F-00AA00C14882“w:macrosPresent =”no“w:embeddedObjPresent = “no”w:ocxPresent =“no”xml:space =“preserve”>
      <o:DocumentProperties>
        <o:作者> Apache POI </ o:作者>
        <o:LastAuthor> xueluo </ o:LastAuthor>
        <o:已创建> 2018-07-02T02:12:00Z </ o:已创建>
        <o:LastSaved> 2018-07-02T05:31:59Z </ o:LastSaved>
        <o:TotalTime> 2880 </ o:TotalTime>
      </ o:DocumentProperties>
      <o:CustomDocumentProperties>
        <o:KSOProductBuildVer dt:dt =“string”> 2052-10.1.0.7400 </ o:KSOProductBuildVer>
      </ o:CustomDocumentProperties>
      <w:fonts>
        <w:defaultFonts w:ascii =“Calibri”w:fareast =“宋体”w:h-ansi =“Calibri”w:cs =“Times New Roman”/>
        <w:font w:name =“Times New Roman”>
          <w:panose-1 w:val =“02020603050405020304”/>
          <w:charset w: val =“00”/>
          <w:family w:val =“Auto”/>
          <w:pitch w:val =“默认“/>
          <w:sig w:usb-0 =”E0002AFF“w:usb-1 =”C0007841“w:usb-2 =”00000009“w:usb-3 =”00000000“w:csb-0 = “400001FF”w:csb-1 =“FFFF0000”/>
        </ w:font>
        <w:font w:name =“宋体”>
          <w:panose-1 w:val =“02010600030101010101”/>
          <w:charset w:val =“86”/>
          <w:family w:val =“Auto”/>
          <w:pitch w:val =“Default”/>
          <w:sig w:usb-0 =“00000003”w:usb-1 =“288F0000”w:usb-2 = “00000006”w:usb-3 =“00000000”w:csb-0 =“00040001”w:csb-1 =“00000000”/>
        </ w:font>
        <w:font w:name =“Wingdings”>
          <w:panose-1 w:val =“05000000000000000000”/>
          <w:charset w:val =“02”/>
          <w:family w:val =“Auto”/>
          <w:pitch w:val =“默认“/>
          <w:sig w:usb-0 =”00000000“w:usb-1 =”00000000“w:usb-2 =”00000000“w:usb-3 =”00000000“w:csb-0 = “80000000”w:csb-1 =“00000000”/>
        </ w:font>
        <w:font w:name =“Arial”>
          <w:panose-1 w:val =“020B0604020202020204”/>
          <w:charset w:val =“01”/>
          <w:family w:val =“SWiss “/>
          <w:pitch w:val =”Default“/>
          <w:sig w:usb-0 =”E0002AFF“w:usb-1 =”C0007843“w:usb-2 =”00000009“w:usb -3 =“00000000”w:csb-0 =“400001FF”w:csb-1 =“FFFF0000”/>
        </ w:font>
        <w:font w:name =“黑体”>
          <w:panose-1 w:val =“02010609060101010101”/>
          <w:charset w:val =“86”/>
          <w:family w:val =“Auto”/>
          <w:pitch w:val =“Default”/>
          <w :sig w:usb-0 =“800002BF”w:usb-1 =“38CF7CFA”w:usb-2 =“00000016”w:usb-3 =“00000000”w:csb-0 =“00040001”w:csb- 1 =“00000000”/>
        </ w:font>
        <w:font w:name =“Courier New”>
          <w:panose-1 w:val =“02070309020205020404”/>
          <w:charset w:val =“01”/>
          <w:family w:val =“Modern”/>
          <w:pitch w:val =“默认“/>
          <W:SIG瓦特:USB-0 =” E0002AFF” W:USB-1 = “C0007843” W:USB-2 = “00000009” W:USB-3 = “00000000”瓦特:CSB-0 = “400001FF”w:csb-1 =“FFFF0000”/>
        </ w:font>
        <w:font w:name =“Symbol”>
          <w:panose-1 w:val =“05050102010706020507”/>
          <w: charset w:val =“02”/>
          <w:family w:val =“Roman”/>
          <w:pitch w:val =“Default”/>
          <w:sig w:usb-0 =“00000000”w :USB-1 =”00000000“w:usb-2 =”00000000“w:usb-3 =”00000000“w:csb-0 =”80000000“w:csb-1 =”00000000“/>
        </ w:font>
        <w:font瓦特:名称=“宋体”>
          <w:panose-1 w:val =“020F0502020204030204”/>
          <w:charset w:val =“00”/>
          <w:family w:val =“SWiss”/>
          <w:pitch w:val =“默认“/>
          <w:sig w:usb-0 =”E10002FF“w:usb-1 =”4000ACFF“w:usb-2 =”00000009“w:usb-3 =”00000000“w:csb-0 = “2000019F” W:CSB-1 = “00000000”/>
        </ W:字体>
        <W:字体瓦特:名称= “微软雅黑”>
          <W:潘糖-1瓦特:VAL = “020B0503020204020204”/>
          < w:charset w:val =“86”/>
          <w:family w:val =“Auto”/>
          <w:pitch w:val =“Default”/>
          <w:sig w:usb-0 =“80000287 “w:usb-1 =”280F3C52“w:usb-2 =”00000016“w:usb-3 =”00000000“w:csb-0 =”0004001F“w:csb-1 =”00000000“/>
        </ w:font>
        <w:font w:name =“Tahoma”>
          <w:panose-1 w:val =“020B0604030504040204”/>
          <w:charset w:val =“00”/>
          <w:family w:val =“Auto”/>
          <w:pitch w:val =“Default”/>
          <w:sig w:usb-0 =“ E1002EFF” W:USB-1 = “C000605B” W:USB-2 = “00000029” W:USB-3 = “00000000”瓦特:CSB-0 = “200101FF” W:CSB-1 = “20280000”/>
        < / w:font>
      </ w:fonts>
      <w:styles>
        <w:latentStyles w:defLockedState =“off”w:latentStyleCount =“260”>
          <w:lsdException w:name =“Normal”/>
          <w :lsdException w:name =“heading 1”/>
          <w:lsdException w:name =“heading 2”/>
          <w:lsdException w:name =“heading 3”/>
          <w:lsdException w:name =“heading 4”/>
          <w:lsdException w:name =“heading 5”/>
          <w:lsdException w:name =“heading 6”/>
          <w:lsdException w:name =“heading 7”/>
          <w:lsdException w:name =“heading 8”/>
          <w:lsdException w:name =“heading 9”/>
          <w:lsdException w:name = “index 1”/>
          <w:lsdException w:name =“index 2”/>
          <w:lsdException w:name =“index 3”/>
          <w:lsdException w:name =“index 4”/>
          <w :lsdException w:name =“index 5”/>
          <w:lsdException w:name =“index 6”/>
          <w:lsdException w:name =“index 7”/>
          <w:lsdException w:name =“index 8“/>
          <w:lsdException w:name =”index 9“/>
          <w:lsdException w:name =”toc 1“/>
          <w:lsdException w:name =”toc 2“/>
          <w:lsdException w:name =”toc 3“/>
          <w:lsdException w:name =”toc 4“/>
          <w:lsdException w:name =“toc 5”/>
          <w:lsdException w:name =“toc 6”/>
          <w:lsdException w:name =“toc 7”/>
          <w:lsdException w:name = “toc 8”/>
          <w:lsdException w:name =“toc 9”/>
          <w:lsdException w:name =“Normal Indent”/>
          <w:lsdException w:name =“footnote text”/>
          <w :lsdException w:name =“annotation text”/>
          <w:lsdException w:name =“header”/>
          <w:lsdException w:name =“footer”/>
          <w:lsdException w:name =“index heading” />
          <w:lsdException w:name =“caption”/>
          <w:lsdException w:name =“table of figures”/>
          <w:lsdException w:name =“envelope address”/>
          <w:lsdException w:name =“envelope return”/>
          <w:lsdException w:name =“footnote reference”/>
          <w:lsdException w:name =“annotation reference”/>
          <w:lsdException w:name =“line number”/>
          <w:lsdException w:name = “页码”/>
          <w:lsdException w:name =“endnote reference”/>
          <w:lsdException w:name =“endnote text”/>
          <w:lsdException w:name =“权限表”/>
          < w:lsdException w:name =“macro”/>
          <w:lsdException w:name =“toa heading”/>
          <w:lsdException w:name =“List”/>
          <w:lsdException w:name =“List Bullet “/>
          <w:lsdException w:name =”列表编号“/>
          <w:lsdException w:name =”List 2“/>
          <w:lsdException w:name =”List 3“/>
          <w:lsdException w:name =”List 4“/>
          <w:lsdException w:name =“List 5”/>
          <w:lsdException w:name =“List Bullet 2”/>
          <w:lsdException w:name =“List Bullet 3”/>
          <w:lsdException w: name =“List Bullet 4”/>
          <w:lsdException w:name =“List Bullet 5”/>
          <w:lsdException w:name =“List Number 2”/>
          <w:lsdException w:name =“List Number 3“/>
          <w:lsdException w:name =”List Number 4“/>
          <w:lsdException w:name =”List Number 5“/>
          <w:lsdException w:name =”Title“/>
          <w: lsdException w:name =“Closing”/>
          <w:lsdException w:name =“Signature”/>
          <w:lsdException w:name =“Default Paragraph Font”/>
          <w:lsdException w:name =“Body Text”/>
          <w:lsdException w:name =“Body Text Indent”/>
          <w:lsdException w:name =“List Continue”/>
          <w:lsdException w:name =“List Continue 2”/>
          <w:lsdException w: name =“List Continue 3”/>
          <w:lsdException w:name =“List Continue 4”/>
          <w:lsdException w:name =“List Continue 5”/>
          <w:lsdException w:name =“Message Header “/>
          <w:lsdException w:name =”Subtitle“/>
          <w:lsdException w:name =”Salutation“/>
          <w:lsdException w:name =”Date“/>
          <w:lsdException w:name = “Body Text First Indent”/>
          <w:lsdException w:name =“Body Text First Indent 2“/>
          <w:lsdException w:name =”Note Heading“/>
          <w:lsdException w:name =”Body Text 2“/>
          <w:lsdException w:name =“Body Text 3”/>
          <w:lsdException w:name =“Body Text Indent 2”/>
          <w:lsdException w:name =“Body Text Indent 3”/>
          <w: lsdException w:name =“Block Text”/>
          <w:lsdException w:name =“Hyperlink”/>
          <w:lsdException w:name =“FollowedHyperlink”/>
          <w:lsdException w:name =“Strong”/>
          <w:lsdException w:name =“Emphasis”/>
          <w:lsdException w:name =“Document Map”/>
          <w:lsdException w:name =“Plain Text”/>
          <w:lsdException w:name =“电子邮件签名“/>
          <w:lsdException w:name =”Normal(Web)“/>
          <w:lsdException w:name =“HTML缩写”/>
          <w:lsdException w:name =“HTML Address”/>
          <w:lsdException w:name =“HTML Cite”/>
          <w:lsdException w:name =“HTML Code”/>
          <w:lsdException w:name =“HTML Definition”/>
          <w:lsdException w:name = “HTML Keyboard”/>
          <w:lsdException w:name =“HTML Preformatted”/>
          <w:lsdException w:name =“HTML Sample”/>
          <w:lsdException w:name =“HTML Typewriter”/>
          <w :lsdException w:name =“HTML Variable”/>
          <w:lsdException w:name =“Normal Table”/>
          <w:lsdException w:name =“annotation subject”/>
          <w:lsdException w:name =“Table简单的1“/>
          <w:lsdException w:name =”表格简单2“/>
          <w:lsdException w:name =”Table Simple 3“/>
          <w:lsdException w:name =”Table Classic 1“/>
          <w:lsdException w:name =“Table Classic 2”/>
          <w:lsdException w:name =“Table Classic 3”/>
          <w:lsdException w:name =“Table Classic 4”/>
          <w:lsdException w :name =“Table Colorful 1”/>
          <w:lsdException w:name =“Table Colorful 2”/>
          <w:lsdException w:name =“Table Colorful 3”/>
          <w:lsdException w:name =“Table第1列“/>
          <w:lsdException w:name =”Table Columns 2“/>
          <w:lsdException w:name =”Table Columns 3“/>
          <w:lsdException w:name =”Table Columns 4“/>
          <w:lsdException w:name =“Table Columns 5”/>
          <w:lsdException w:name =“Table Grid 1”/>
          <w:lsdException w:name =“Table Grid 2”/>
          <w:lsdException w:name =“Table Grid 3”/>
          <w:lsdException w:name =“Table Grid 4”/>
          <w:lsdException w:name =“Table Grid 5”/>
          <w:lsdException w:name =“Table Grid 6”/>
          <w:lsdException w :name =“Table Grid 7”/>
          <w:lsdException w:name =“Table Grid 8”/>
          <w:lsdException w:name =“Table List 1”/>
          <w:lsdException w:name =“Table List 2“/>
          <w:lsdException w:name =”Table List 3“/>
          <w:lsdException w:name =”Table List 4“/>
          <w:lsdException w:name =”Table List 5“/>
          <w:lsdException w:name =“Table List 6”/>
          <w:lsdException w:name =“Table List 7”/>
          <w:lsdException w:name =“Table List 8”/>
          <w:lsdException w:name =“Table 3D effects 1”/>
          <w:lsdException w:name =“Table 3D effects 2”/>
          <w:lsdException w:name =“Table 3D effects 3”/>
          <w:lsdException w:name =“Table Contemporary”/>
          <w:lsdException w:name =“Table Elegant”/>
          <w:lsdException w:name =“Table Professional”/>
          <w:lsdException w:name =“Table Subtle 1”/>
          <w:lsdException w:name =“Table Subtle 2“/>
          <w:lsdException w:name =”Table Web 1“/>
          <w:lsdException w:name =”Table Web 2“/>
          <w:lsdException w:name =”Table Web 3“/>
          < w:lsdException w:name =“Balloon Text”/>
          <w:lsdException w:name =“Table Grid”/>
          <w:lsdException w:name =“Table Theme”/>
          <w:lsdException w:name =“Light Shading”/>
          <w:lsdException w:name =“Light List”/>
          <w:lsdException w:name =“Light Grid”/>
          <w:lsdException w:name =“Medium Shading 1”/>
          <w:lsdException w:name =“Medium Shading 2”/>
          <w:lsdException w:name =“Medium List 1”/>
          <w:lsdException w:name =“Medium List 2”/>
          <w:lsdException w:name =“Medium Grid 1 “/>
          <w:lsdException w:name =”Medium Grid 2“/>
          <w:lsdException w:name =”Medium Grid 3“/>
          <w:lsdException w:name =”Dark List“/>
          <w: lsdException w:name =“Colorful Shading”/>
          <w:lsdException w:name =“彩色列表“/>
          <w:lsdException w:name =”Colorful Grid“/>
          <w:lsdException w:name =”Light Shading Accent 1“/>
          <w:lsdException w:name =“Light List Accent 1”/>
          <w:lsdException w:name =“Light Grid Accent 1”/>
          <w:lsdException w:name =“Medium Shading 1 Accent 1”/>
          < w:lsdException w:name =“Medium Shading 2 Accent 1”/>
          <w:lsdException w:name =“Medium List 1 Accent 1”/>
          <w:lsdException w:name =“Medium List 2 Accent 1”/>
          <w:lsdException w:name =“Medium Grid 1 Accent 1”/>
          <w:lsdException w:name =“Medium Grid 2 Accent 1”/>
          <w:lsdException w:name =“Medium Grid 3 Accent 1”/ >
          <w:lsdException w:name =“Dark List Accent 1”/>
          <w:lsdException w:name =“Colorful Shading Accent 1”/>
          <w:lsdException w:name =“Colorful List Accent 1”/>
          <w:lsdException w:name =“Colorful Grid Accent 1”/>
          <w:lsdException w:name =“Light Shading Accent 2”/>
          <w:lsdException w:name =“Light List Accent 2”/>
          <w :lsdException w:name =“Light Grid Accent 2”/>
          <w:lsdException w:name =“Medium Shading 1 Accent 2”/>
          <w:lsdException w:name =“Medium Shading 2 Accent 2”/>
          <w :lsdException w:name =“Medium List 1 Accent 2”/>
          <w:lsdException w:name =“Medium List 2 Accent 2”/>
          <w:lsdException w:name =“Medium Grid 1 Accent 2”/>
          < w:lsdException w:name =“Medium Grid 2 Accent 2”/>
          <w:lsdException w:name =“Medium Grid 3 Accent 2”/>
          <w:lsdException w:name =“Dark List Accent 2”/>
          <w:lsdException w:name =“Colorful Shading Accent 2”/>
          <w:lsdException w:name =“Colorful List Accent 2”/>
          <w:lsdException w:name =“Colorful Grid Accent 2”/>
          <w :lsdException w:name =“Light Shading Accent 3”/>
          <w:lsdException w:name =“Light List Accent 3”/>
          <w:lsdException w:name =“Light Grid Accent 3”/>
          <w:lsdException w:name =“Medium Shading 1 Accent 3”/>
          <w:lsdException w:name =“Medium Shading 2 Accent 3”/>
          <w:lsdException w:name =“Medium List 1 Accent 3”/>
          <w: lsdException w:name =“Medium List 2 Accent 3”/>
          <w:lsdException w:name =“Medium Grid 1 Accent 3”/>
          <w:lsdException w:name =“Medium Grid 2 Accent 3”/>
          <w:lsdException w:name =“Medium Grid 3 Accent 3”/>
          <w:lsdException w:name =“Dark List Accent 3”/>
          <w:lsdException w:name =“Colorful Shading Accent 3”/>
          < w:lsdException w:name =“Colorful List Accent 3”/>
          <w:lsdException w:name =“Colorful Grid Accent 3”/>
          <w:lsdException w:name =“Light Shading Accent 4”/>
          <w: lsdException w:name =“Light List Accent 4”/>
          <w:lsdException w:name =“Light Grid Accent 4”/>
          <w:lsdException w:name =“Medium Shading 1 Accent 4”/>
          <w:lsdException w:name =“Medium Shading 2 Accent 4”/>
          <w:lsdException w:name =“Medium List 1 Accent 4”/>
          <w:lsdException w:name =“Medium List 2 Accent 4”/>
          <w:lsdException w:name =“Medium Grid 1 Accent 4”/>
          <w:lsdException w:name =“Medium Grid 2 Accent 4”/>
          <w:lsdException w:name =“Medium Grid 3 Accent 4”/ >
          <w:lsdException w:name =“Dark List Accent 4”/>
          <w:lsdException w:name =“Colorful Shading Accent 4”/>
          <w:lsdException w:name =“Colorful List Accent 4”/>
          < w:lsdException w:name =“Colorful Grid Accent 4”/>
          <w:lsdException w:name =“Light Shading Accent 5”/>
          <w:lsdException w:name =“Light List Accent 5”/>
          <w: lsdException w:name =“Light Grid Accent 5”/>
          <w:lsdException w:name =“中等着色1重音5“/>
          <w:lsdException w:name =”Medium Shading 2 Accent 5“/>
          <w:lsdException w:name =“Medium List 1 Accent 5”/>
          <w:lsdException w:name =“Medium List 2 Accent 5”/>
          <w:lsdException w:name =“Medium Grid 1 Accent 5”/ >
          <w:lsdException w:name =“Medium Grid 2 Accent 5”/>
          <w:lsdException w:name =“Medium Grid 3 Accent 5”/>
          <w:lsdException w:name =“Dark List Accent 5”/ >
          <w:lsdException w:name =“Colorful Shading Accent 5”/>
          <w:lsdException w:name =“Colorful List Accent 5”/>
          <w:lsdException w:name =“Colorful Grid Accent 5”/>
          < w:lsdException w:name =“Light Shading Accent 6”/>
          <w:lsdException w:name =“Light List Accent 6”/>
          <w:lsdException w:name =“Light Grid Accent 6”/>
          <w:lsdException w:name =“Medium Shading 1 Accent 6”/>
          <w:lsdException w:name =“Medium Shading 2 Accent 6”/>
          <w:lsdException w:name =“Medium List 1 Accent 6”/ >
          <w:lsdException w:name =“Medium List 2 Accent 6”/>
          <w:lsdException w:name =“Medium Grid 1 Accent 6”/>
          <w:lsdException w:name =“Medium Grid 2 Accent 6” />
          <w:lsdException w:name =“Medium Grid 3 Accent 6”/>
          <w:lsdException w:name =“Dark List Accent 6”/>
          <w:lsdException w:name =“Colorful Shading Accent 6”/ >
          <w:lsdException w:name =“Colorful List Accent 6”/>
          <w:lsdException w:name =“Colorful Grid Accent 6”/>
        </ w:latentStyles>
        <w:style w:type =“paragraph”w:styleId =“a1”w:default =“on”>
          <w:name w:val =“Normal”/>
          <w:pPr>
            <w:widowControl w: val =“off”/>
            <w:jc w:val =“both”/>
          </ w:pPr>
          <w:rPr>
            <w:rFonts w:ascii =“Calibri”w:h-ansi =“Calibri “w:fareast =”宋体“w:cs =”Times New Roman“w:hint =”default“/>
            <w:sz w:val =”21“/>
            <w:sz-cs w:val =” 22“/>
          </ w:rPr>
        </ w:style>
        <w:style w:type =”character“w:styleId =”a2“w:default =”on“>
          <w:name w:val =“Default Paragraph Font”/>
          <w:semiHidden />
        </ w:style>
        <w:style w:type =“table”w:styleId =“a3”w:default =“on”>
          <w:name w:val =“Normal Table”/>
          <w:semiHidden />
          <w:tblPr>
            <w:tblCellMar>
              <w:top w:w =“0”w:type =“dxa”/>
              <w:left w:w =“108”w:type =“dxa”/>
              <w:bottom w:w =“0”w:type =“dxa”/>
              <w:right w:w =“108 “w:type =”dxa“/>
            </ w:tblCellMar>
          </ w:tblPr>
        </ w:style>
      </ w:styles>
      <w:bgPict>
        <w:background />
        <v:background id =“_ x0000_s1025”>
          <v:fill on =“f”focussize =“0,0”/>
        </ v:background>
      </ w:bgPict>
      <w:docPr>
        <w:view w:val =“print”/>
        <w:zoom w:percent =“100”/>
        <w:characterSpacingControl w:val =“DontCompress”/>
        <w:documentProtection w:enforcement =“off”/>
        <w:punctuationKerning />
        <w:doNotEmbedSystemFonts />
        <w:bordersDontSurroundHeader />
        <w:bordersDontSurroundFooter />
        <w:defaultTabStop w:val =“500”/>
        <w:displayHorizo​​ntalDrawingGridEvery w:val =“1”/>
        <w:displayVerticalDrawingGridEvery w:val =“1”/>
        <w:compat>
          <w:useFELayout />
          <w:wrapTextWithPunct />
          <w:breakWrappedTables />
          <w:useAsianBreakRules />
          <w:dontGrowAutofit />
          <w:useFELayout />
        </ w:compat>
      </ w:docPr>
      <w:body>
        <wx:sect>
          <w:p>
            <w:pPr>
              <w:jc w:val =“center”/>
              <w:rPr>
                <w:sz w:val =“52”/>
                <w:sz-cs w:val =“52”/>
              </ w:rPr>
            </ w:pPr>
            <w:r>
              <w:rPr>
                <w:rFonts w:hint =“fareast”/>
                <w:sz w:val =“ 52“/>
                <w:sz-cs w:val =”52“/>
              </ w:rPr>
              <#list childList as childBean>
              <#if childBean_index == 0>
              <w:t> $ {childBean.countyname }计划生育家庭科学育儿试点项目建档统计表</ w:t>
              </ #if>
              </#list>
            </ w:r>
          </ w:p>
          <w:p>
            <w:pPr>
              <w:rPr>
                <w:rFonts w:fareast =“宋体”w:hint =“fareast”/>
                <w:lang w:fareast =“ZH-CN”/>
              </ w:rPr >
            </ w:pPr>
            <w:r>
              <w:rPr>
                <w:rFonts w:hint =“fareast”/>
                <w:sz w:val =“32”/>
                <w:sz-cs w :val =“32”/>
              </ w:rPr>
              <w:t>所属地:</ w:t>
            </ w:r>
            <w:r>
              <w:rPr>
                <w:rFonts w: hint =“fareast”/>
                <w:sz w:val =“32”/>
                <w:sz-cs w:val =“32”/>
                <w:lang w:fareast =“ZH-CN”/>
              </ w:rPr>
              <#list childList as childBean>
              <#if childBean_index == 0>
              <w:t> $ {childBean.nhfpcname?substring(0,2)}街社服务中心</ w:t>
              </#if>
              </ #list>
            </ w:r>
            <w:r>
              <w:rPr>
                <w:sz w:val =“32”/>
                <w:sz-cs w:val =“32”/>
              </ w :rPr>
              <w:t> </ w:t>
            </ w:r>
            <w:r>
              <w:rPr>
                <w:rFonts w:hint =“fareast”/>
                <w:sz w:val =“32”/>
                <w:sz-cs w:val =“32”/>
              </ w:rPr>
              <w:t> </ w:t>
            </ w:r>
            <w:r>
              <w:rPr>
                <w:sz w:val =“32”/>
                <w:sz-cs w:val =“32”/>
              </ w:rPr>
              <w:t> < / w:t>
            </ w:r>
            <w:r>
              <w:rPr>
                <w:rFonts w:hint =“fareast”/>
                <w:sz w:val =“32”/>
                <w: sz-cs w:val =“32”/>
              </ w:rPr>
              <w:t> </ w:t>
            </ w:r>
            <w:r>
              <w:rPr>
                <w:rFonts w :hint =“fareast”/>
                <w:sz w:val =“32”/>
                <w:sz-cs w:val =“32”/>
                <w:lang w:val =“EN-US”w:fareast =“ZH-CN”/>
              </ w:rPr>
              <w:t> </ w:t>
            </ w:r>
            <w:r>
              <w:rPr>
                <w:rFonts w:hint =“fareast”/>
                <w:sz w:val =“32 “/>
                <w:sz-cs w:val =”32“/>
              </ w:rPr>
              <#list childList as childBean>
              <#if childBean_index == 0>
              <w:t>统计时间:$ {childBean .nowTime} </ w:t>
              </#if>
              </#list>
            </ w:r>
          </ w:p>
          <w:tbl>
            <w:tblPr>
              <w:tblW w:w =“ 13192“w:type =”dxa“/>
              <w:tblInd w:w =“0”w:type =“dxa”/>
              <w:tblBorders>
                <w:top w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                <w:left w:val =“单个“w:sz =”0“wx:bdrwidth =”0“w:space =”0“w:color =”auto“/>
                <w:bottom w:val =”single“w:sz =”0“ wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                <w:right w:val =“single”w:sz =“0”wx:bdrwidth =“0” space =“0”w:color =“auto”/>
                <w:insideH w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color = “auto”/>
                <w:insideV w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
              </ w:tblBorders>
              <w:tblLayout w:type =“Fixed”/>
              <w:tblCellMar>
                <w:top w :w =“100”w:type =“dxa”/>
                <w:left w:w =“100”w:type =“dxa”/>
                <w:bottom w:w =“100”w:type =“dxa”/>
                <w:right w:w =“100”w:type =“dxa”/>
              </ w:tblCellMar>
            </ w: tblPr>
            <w:tblGrid>
              <w:gridCol w:w =“938”/>
              <w:gridCol w:w =“1603”/>
              <w:gridCol w:w =“796”/>
              <w:gridCol w:w =“1514”/>
              <w:gridCol w:w =“1065”/>
              <w:gridCol w:w =“1869”/>
              <w:gridCol w:w =“1334”/>
              <w :gridCol w:w =“1335”/>
              <w:gridCol w:w =“2738”/>
            </ w:tblGrid>
            <w:tr>
              <w:tblPrEx>
                <w:tblBorders>
                  <w:top w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                  <w:left w:val =“单个“w:sz =”0“wx:bdrwidth =”0“w:space =”0“w:color =”auto“/>
                  <w:bottom w:val =”single“w:sz =”0“ wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                  <w:right w:val =“single”w:sz =“0”wx:bdrwidth =“0”w: space =“0”w:color =“auto”/>
                  <w:insideH w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color = “auto”/>
                  <w:insideV w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                </ w:tblBorders>
                <w:tblCellMar>
                  <w:top w:w =“100” w:type =“dxa”/>
                  <w:left w:w =“100”w:type =“dxa”/>
                  <w:bottom w:w =“100”w:type =“dxa”/>
                  <w:right w:w =“100”w:type =“dxa”/>
                </ w:tblCellMar>
              </ w: tblPrEx>
              <w:trPr />
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“938”w:type =“dxa”/>
                  <w:shd w:val =“clear”w :color =“auto”w:fill =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>编号</ w:t>
                  </ w:r>
                < / w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1603”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto” />
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>孩子姓名</ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w: tc>
                <w:tcPr>
                  <w:tcW w:w =“796”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“ auto“/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>性别</ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <W:TC>
                <w:tcPr>
                  <w:tcW w:w =“1514”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>出生日期</ w:t>
                  </ w:t>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1065” dxa“/>
                  <w:shd w:val =”clear“w:color =”auto“w:fill =”auto“/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w: t>第几胎</ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1869”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto”/>
                </ w :tcPr>
                <w:p>
                  <w:r>
                    <w:t>是否独生子女</ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1334”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto” />
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>是否留守</ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1335”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto” />
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>户籍类型</ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              < w:tc>
                <w:tcPr>
                  <w:tcW w:w =“2738”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto” =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>添加日期</ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
            </ w:tr>
            <#list childList as childBean>
            <w:tr>
              <w:tblPrEx>
                <w:tblBorders>
                  <w:top w:val =“single”w:sz =“0”wx:bdrwidth = “0”w:space =“0”w:color =“auto”/>
                  <w:left w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0 “w:color =”auto“/>
                  <w:bottom w:val =”single“w:sz =”0“wx:bdrwidth =”0“w:space =”0“w:color =”auto“/ >
                  <w:右w:val =“单”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                  <w:insideH w:val =“single”w:sz =“0”wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                  <w:insideV w:val =“single”w :sz =“0”wx:bdrwidth =“0”w:space =“0”w:color =“auto”/>
                </ w:tblBorders>
                <w:tblCellMar>
                  <w:top w:w =“100”w:type =“dxa”/>
                  <w:left w:w =“100”w:type =“dxa”/>
                  <w: :w =“100”w:type =“dxa”/>
                  <w:right w:w =“100”w:type =“dxa”/>
                </ w:tblCellMar>
              </ w:tblPrEx>
              <w: trPr />
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“938”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto “w:fill =”auto“/>
                </ w:tcPr>
                <w:p>
                  <w:pPr>
                    <w:rPr>
                      <w:rFonts w:hint =“fareast”/>
                      <w:lang w:val =“EN-US”w:fareast =“ZH-CN”/>
                    </ w:rPr>
                  </ w:pPr>
                  <w:r>
                    <w:rPr>
                      <w:rFonts w:hint =“fareast”/>
                      <w:lang w:val =“EN-US”w: fareast =“ZH-CN”/>
                    </ w:rPr>
                    <w:t> $ {childBean_index + 1} </ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1603”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w: fill =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t> $ {childBean.childname!} </ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“796”w:type =“dxa”/>
                  <w:shd w:val = “clear”w:color =“auto”w:fill =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t> $ {childBean.sexflagname!} </ w :t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1514”w:type =“dxa”/ >
                  <w:shd w:val =“clear”w:color =“auto“w:fill =”auto“/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t> $ {childBean.birthday!} </ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1065”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto”/>
                </ w:tcPr>
                <瓦特:p>
                  <W:R>
                    <W:T> $ {childBean.fetusnum!} </ W:T>
                  </ W:R>
                </ w的:p>
              </ W:TC>
              <W:TC>
                <w:tcPr>
                  <w:tcW w:w =“1869”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t> $ {childBean.singleflagname!} </ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
              <w:tc >
                <w:tcPr>
                  <w:tcW w:w =“1334”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto “/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t> $ {childBean.stayflagname!} </ w:t>
                  </ w:r>
                </ w:p>
              < / w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“1335”w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w:r>
                    <w:t> $ { </ w:
                  </ w:
                w>
              </ w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w =“2738” w:type =“dxa”/>
                  <w:shd w:val =“clear”w:color =“auto”w:fill =“auto”/>
                </ w:tcPr>
                <w:p>
                  <w: r>
                    <w:t> $ {childBean.createtime!} </ w:t>
                  </ w:r>
                </ w:p>
              </ w:tc>
            </ w:tr>
            </#list>
          </ w:tbl>
          <w:p />
          <w:p />
          <w:sectPr>
            <w:pgSz w:w =“16838”w:h =“11906”w:orient =“landscape”/>
            <w:pgMar w:top =“1800”w:right =“1440”w:bottom =“1800”w:left =“1440”w:header =“720”w:footer =“720”w:gutter = “0”/>
            <w:docGrid w:type =“lines”w:line-pitch =“312”/>
          </ w:sectPr>
        </ wx:sect>
      </ w:body>
    </ w:wordDocument >

    2,代码(首先要导入freemark的jar包)

     

    public static void newWordDoc(List <ChildDtoBean> rows,String path){
    try {
                //创建配置实例
                配置cfg = new Configuration();
                cfg.setDefaultEncoding( “UTF-8”);
                cfg.setDirectoryForTemplateLoading(new File(path));


                //获取模板
                temp = cfg.getTemplate(“wordtemplate.ftl”);
                temp.setEncoding( “UTF-8”);


                //创建数据模型
                映射root = new HashMap();
               
                root.put(“childList”,rows);


                //将模板和数据模型合并生成文件
                文件docFile = new File(path +“/学生信息.doc”);

                temp.process(root,docout);
            } catch(Exception e){
                e.printStackTrace();
            }
    }

     

    展开全文
  • 1、编辑word模板,需要动态填充数据的用对应的... 3、输出word格式xml。 @SuppressWarnings("unchecked") public class Test2 { /** * @param args */ public static void main(String...

    1、编辑word模板,需要动态填充数据的用对应的占位符替代,表格的话只保留表格的头即可。
    2、dom4j读取模板,然后进行填充数据。
    3、输出word格式的xml。

    @SuppressWarnings("unchecked")
    public class Test2 {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) throws Exception {
    		File file = new File("c:\\t2007.xml");
    		handleWord(file);
    	}
    
    	public static void handleWord(File file) throws Exception {
    
    		Map<String, String> map = new HashMap();
    		map.put("orderCd", "10004");
    		map.put("workContent", "word工作测试");
    		map.put("preparePerson", "王五");
    		map.put("prepareTime", "2010年10月2日");
    		map.put("backPerson", "李四");
    		map.put("backDate", "2012年12月23日");
    		map.put("bjclPreparePerson", "绿茶");
    		map.put("bjclPrepareTime", "2012年12月9日");
    		map.put("bjclBackPerson", "可乐");
    		map.put("bjclBackDate", "2014年1月2日");
    		List datas = new ArrayList();
    		List temp = new ArrayList();
    		temp.add(new Object[] { "1",
    				"http://schemas.openxmlformats.org/wordprocessingml/2006/main",
    				"b1", "c1", "c1" });
    		temp.add(new Object[] { "1",
    				"http://schemas.openxmlformats.org/wordprocessingml/2006/main",
    				"b2", "c2", "c1" });
    		temp.add(new Object[] { "1", "a3", "b3", "c3", "c1" });
    		temp.add(new Object[] { "2", "a3", "b3", "c3", "c1" });
    		temp.add(new Object[] { "3", "a3", "b3", "c3", "c1" });
    		temp.add(new Object[] { "3", "a3", "b3", "c3", "c1" });
    		temp.add(new Object[] { "3", "a3", "b3", "c3", "c1" });
    			datas.add(temp);
    		temp = new ArrayList();
    		temp.add(new Object[] { "1", "aa1", "bb1", "cc1", "c1" });
    		temp.add(new Object[] { "2",
    				"http://schemas.openxmlformats.org/wordprocessingml/2006/main",
    				"bb2", "cc2", "c1" });
    		temp.add(new Object[] { "3", "aa3", "bb3", "cc3", "c1" });
    		datas.add(temp);
    
    		SAXReader reader = new SAXReader();
    		
    		InputStream inputStream=new FileInputStream(file);
    //		inputStream.read(data);
    		
    		Document doc = reader.read(inputStream);// 获取document
    		replaceText(doc, map);
    		appendTable(doc, datas);
    		
    		DefaultXPath xpath = new DefaultXPath("//w:document//w:body//w:tbl");
    		xpath
    				.setNamespaceURIs(Collections
    						.singletonMap("w",
    								"http://schemas.openxmlformats.org/wordprocessingml/2006/main"));
    		List<Element> tables = xpath.selectNodes(doc);
    
    		handle(doc,tables.get(0),new String[]{"0"});
    		XMLWriter writer = null;
    		OutputFormat format = OutputFormat.createPrettyPrint();
    		format.setEncoding("utf-8");
    		writer = new XMLWriter(new FileOutputStream(new File("c:\\o2007.xml")),
    				format);
    	
    		writer.write(doc);
    		writer.flush();
    		writer.close();
    
    	}
    
    	/**
    	 * 
    	 * @param document
    	 * @param map
    	 * @throws Exception
    	 */
    	public static void replaceText(Document document, Map<String, String> map)
    			throws Exception {
    		DefaultXPath xpath = new DefaultXPath("//w:document//w:body//w:t");
    		xpath
    				.setNamespaceURIs(Collections
    						.singletonMap("w",
    								"http://schemas.openxmlformats.org/wordprocessingml/2006/main"));
    
    		List<Element> texts = xpath.selectNodes(document);
    		for (Element element : texts) {
    			if ("".equals(element.getTextTrim()))
    				continue;
    			for (Map.Entry<String, String> entry : map.entrySet()) {
    				if (element.getText().contains(entry.getKey())) {
    					element.setText(entry.getValue());
    				}
    			}
    		}
    	}
    
    	/**
    	 * 
    	 * @param document
    	 * @param list
    	 * @throws Exception
    	 */
    	public static void appendTable(Document document, List datas)
    			throws Exception {
    		DefaultXPath xpath = new DefaultXPath("//w:document//w:body//w:tbl");
    		xpath
    				.setNamespaceURIs(Collections
    						.singletonMap("w",
    								"http://schemas.openxmlformats.org/wordprocessingml/2006/main"));
    		List<Element> tables = xpath.selectNodes(document);
    		List data = null;
    		Element table, tr, td, p, t, r;
    		Object[] obj;
    		// table
    		for (int i = 0; i < tables.size(); i++) {
    			if (i >= datas.size())
    				break;
    			data = (List) datas.get(i);
    			// 取得一个table对象
    			table = tables.get(i);
    			// 行数
    			for (int j = 0; j < data.size(); j++) {
    				obj = (Object[]) data.get(j);
    				tr = table.addElement("w:tr");
    				// 对列对象进行数据填充
    				for (int k = 0; k < obj.length; k++) {
    					td = tr.addElement("w:tc");
    					td.addAttribute("w:val", (String) obj[k]);
    					p = td.addElement("w:p");
    					r = p.addElement("w:r");
    					t = r.addElement("w:t");
    					t.setText((String) obj[k]);
    				}
    			}
    		}
    	}
    
    	public static void handle(Document document,Element table,String[] columnIdx) throws Exception {
    
    		Element  line, column;
    		List<Element> lines,columns;
    		Attribute attribute = null;
    		lines = table.elements("tr");
    		
    		MultiHashMap multiHashMap = new MultiHashMap();
    		for (int i = 1; i < lines.size(); i++) {
    			line = lines.get(i);
    			columns = line.elements("tc");
    			for(String index:columnIdx)
    			{
    				column = columns.get(Integer.parseInt(index));
    				attribute = column.attribute("w:val");
    				multiHashMap.put(attribute.getText(), column);
    			}
    
    		}
    		//进行合并单元格
    		String key = null;
    		Collection collection = null;
    		Element[] vMergeArr = null;
    		boolean flag;
    		for (Iterator iterator = multiHashMap.keySet().iterator(); iterator
    				.hasNext();) {
    			flag = true;
    			key = (String) iterator.next();
    			collection = multiHashMap.getCollection(key);
    			if (collection.size() > 1) {
    				vMergeArr = (Element[]) collection.toArray(new Element[0]);
    				for (Element e : vMergeArr) {
    					if (flag) {
    						e.addElement("w:vMerge").addAttribute("w:val",
    								"restart");
    						flag = false;
    					} else {
    						e.addElement("w:vMerge");
    					}
    				}
    			}
    		}
    	}
    }

     

    展开全文
  • dom4j,Jdom,w3c dom解析xml文档时速度比较慢,因此选择自己写代码解析xml文档。 2 思路 首先,对xml文件进行分析,熟悉标签; 然后,切分文档为不同的块。我们要对文档中的书签进行替换,因此需要将文档切分为...
  • 使用freemarker生成word文档,如何转成标准格式的word?...所以想到将freemarker生成xml格式word转成标准格式的word在转成PDF。 现在不知道怎么将xml格式word转成标准格式的word。 求帮忙啊!
  • 最近使用freemarker制作...是根据xml格式生成的,手机端不支持识别,标准的word格式放到notepad里是乱码, xml格式生成的doc拖进去显示的是xml格式,所以我想请问有没有方法可以把xml格式的 doc文档转换成标准格式!
  • 可以快速批量生成HTML/XML/WORD文档/EXCEL...能够按照模板格式生成HTML/XML/WORD文档/EXCEL文档等等各种文档。比如,需要批量生成报表、单据、静态网页、配置文件等等,都可以编辑一个模板,然后用此代码快速批量生成。
  • 由于最近工作需要使用java代码生成多样化格式的word文档,第一个想到了xml来实现,在网上找了几个例子再结合自己的项目需求,最终实现了想...2、将word文档另存为xml格式,另存的时候要注意版本 3、将生成的xml文档...
  • 情况如标题所说,急啊!...要求用的工具是open xml sdk,有两份word doc文档,内容相同,只不过是某些字体的颜色,大小不同,现在的任务是把这两分doc 文档转为xml,然后在对比两份xml文件,生成对比报告。。。。
  • Freemarker生成Word文档

    2017-01-03 01:52:53
    Java Web项目中使用Freemarker生成Word文档中office与wps不兼容,打开为xml格式显示
  • 请叫我小C2016-01-12 11:58:51 利用java通过freemarker模板文件生成带格式的word文档 最近做了个小项目,需要在线...2.把word另存为xml格式,并且格式化,好修改里面的东西 3.修改好后保存,格式改为ftl模板 ...
  • 利用FreeMarker模板生成word文档,其它格式文档同理,如pdf,txt,java,xml等等 需要向项目中加入freemarker的JAR文件,可以通过下面的链接获得Freemarker的最新版本: ...1、把要生成的模板文件填入freemarker...
  • XML导出word文档

    千次阅读 2018-01-25 10:58:12
    最近做项目,需要导出word文档的报表,网上查询了一些资料,感觉用xml做这个相对比较简单,Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker...
  • 首先在pom文件中加入下面这个依赖(不是Maven项目的话...将上述1所创建的文档另存为.xml格式。3.编辑上述2的.xml文件去掉多余的xml标记,如下图(红圈是正确的格式,应该由${变量符}包裹着) 4.将上述3的文档另存为.ft...
  • freeMarker模板生成word文档(待补充) 手动将word转freeMarker模板 将现有word文档另存为xml格式 使用notepad++等编辑器,将需要填充的内容使用el表达式填充,如 ${obj.title} 然后将.xml文件后缀改为.ftl,导入.ftl...
  • 使用xml生成的doc文件在手机上打开出现问题,不显示内容而显示xml 查找了一下之后决定使用jacob来进行转换 public class Office2HtmlUtil { // 格式大全:前缀对应以下方法的fmt值 // 0:Microsoft Word 97 - ...
  • java生成word文档

    2016-06-20 15:33:39
    java生成word借助于freemarjer.jar 1.建立一个word模板 2、将模板另存为word XML格式 3、然后用记事本将这个xml打开,Ctrl+f 查找word模板上填写的要生成的单词,用${ }给括起来。如下: 4、将此文件...
  • 该工具从最初支持chm文档格式开始,通过开源,大家集思广益,不断改进,又陆续支持word、excel、pdf、html、xml、markdown等文档格式的导出。本项目力求做最简单、最实用的数据库文档(字典)生成工具!支持的数据库...
  • 最近做了个小项目,需要在线生成起诉状且带...把word另存为xml格式,并且格式化,好修改里面的东西3.修改好后保存,格式改为ftl模板下面代码:public final static String createWord(HttpServletResponse respons...
  • java 生成Word文档

    2015-08-24 15:06:00
    JAVA生成Word文档: 注:引入freemarker-2.3.19.jar包 根据学长的方法整理出自己的逻辑 ,以下是自己的实践结果: 1、 注:以上图为Word模板 ,为了方便,填充的地方使用拼音。 2、将其Word模板另存为XML格式...
  • Word从2003开始支持XML格式,操作流程 先用office2003或者2007编辑好word的样式,然后另存为xml, 将xml翻译为FreeMarker模板, 最后用java来解析FreeMarker模板并输出Doc。 经测试这样方式生成word文档完全...
  • Word文档生成

    2016-05-09 11:55:30
    非常多的时候,都需要在程序当中生成一些文档,这些文档可能是csv,word,pdf,PPT,xls等文件格式。 生成csv还是比较简单的,但是要生成word,excel就麻烦多了。 当然,Tiny框架也面临这个问题,如何才能帮助开发人员...
  • 生成word文档的框架比较多,比如poi,java2word,itext和freemarker。 调研之后,freemarker来实现挺简单的,具体步骤如下: 1. 新建word文档,占位符用${},比如:${name}。样例: 你好 ${name} 2. 把word另存为...
  • 近期的一个项目需要以Word文件做模板动态生成Doc文件。    原先是使用 VBA 做的,也可以实现,但效果不太满意,一方面是速度比较慢,另一方面是由于客户端环境比较复杂,经常会出现各种错误。    现在的方案...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 357
精华内容 142
关键字:

文档xml格式生成word