1. 程式人生 > >JAVA利用FreeMarker生成(匯出)Word文件

JAVA利用FreeMarker生成(匯出)Word文件

一、首先下載相對應的jar包:freemarker.jar;
而我的專案環境是:maven
在pom.xml中:
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.8</version>
</dependency>
二、自定義Word模板,另存為.XML檔案,開啟進行相對應的編輯;
Word模板如下圖:
另存為.XML檔案如下圖:
線上格式化工具:http://tool.oschina.net/codeformat/xml/
開啟xml檔案,搜尋start,end;將其改成:${start},${end}
其模板有遍歷的內容,所有要對其設定:
搜尋:<w:tr
找到第一個,tr的意思不用解釋了吧,代表著一行。
這也意味著找到了Table中的第一行,但是需要遍歷的不是從第一行開始,而是從第二行。
好的,繼續搜尋,找到第二個。


</w:tr>  
<#list list2 as test>  

<w:tr wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidTr="00F95F67">


在它的頭上加一個<#list 你的集合名稱 as xxxx>  
ok,有開頭就有結尾,玩過JSP上的EL表示式應該不會感覺很陌生吧。(比如:<w:t>${test.mir}</w:t>等)
搜尋 </w:tr>
同樣找到第二個,加上</#list>結束符。
好的,這樣就沒問題了。
</w:tr>
</#list>  
</w:tbl>
注:我的集合名稱是:list2(名稱可以自定義);我的集合別名是:test(名稱也可以自定義,與下面表示式的保持一致)
三、編輯完成後,把檔案字尾名改成.ftl格式;


四、部分程式碼如下;


在table01.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:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
  <w:ignoreSubtree w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/>
  <o:DocumentProperties>
    <o:Author>Microsoft</o:Author>
    <o:LastAuthor>Microsoft</o:LastAuthor>
    <o:Revision>2</o:Revision>
    <o:TotalTime>1</o:TotalTime>
    <o:Created>2017-05-03T02:03:00Z</o:Created>
    <o:LastSaved>2017-05-03T02:03:00Z</o:LastSaved>
    <o:Pages>1</o:Pages>
    <o:Words>11</o:Words>
    <o:Characters>67</o:Characters>
    <o:Company>CHINA</o:Company>
    <o:Lines>1</o:Lines>
    <o:Paragraphs>1</o:Paragraphs>
    <o:CharactersWithSpaces>77</o:CharactersWithSpaces>
    <o:Version>12</o:Version>
  </o:DocumentProperties>
  <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="Roman"/>
      <w:pitch w:val="variable"/>
      <w:sig w:usb-0="E0002AFF" w:usb-1="C0007841" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/>
    </w:font>
    <w:font w:name="宋體">
      <w:altName w:val="SimSun"/>
      <w:panose-1 w:val="02010600030101010101"/>
      <w:charset w:val="86"/>
      <w:family w:val="auto"/>
      <w:pitch w:val="variable"/>
      <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
    </w:font>
    <w:font w:name="Cambria Math">
      <w:panose-1 w:val="02040503050406030204"/>
      <w:charset w:val="01"/>
      <w:family w:val="Roman"/>
      <w:notTrueType/>
      <w:pitch w:val="variable"/>
      <w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000000" w:csb-1="00000000"/>
    </w:font>
    <w:font w:name="Calibri">
      <w:panose-1 w:val="020F0502020204030204"/>
      <w:charset w:val="00"/>
      <w:family w:val="Swiss"/>
      <w:pitch w:val="variable"/>
      <w:sig w:usb-0="E00002FF" w:usb-1="4000ACFF" w:usb-2="00000001" w:usb-3="00000000" w:csb-0="0000019F" w:csb-1="00000000"/>
    </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="variable"/>
      <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
    </w:font>
  </w:fonts>
  <w:styles>
    <w:versionOfBuiltInStylenames w:val="7"/>
    <w:latentStyles w:defLockedState="off" w:latentStyleCount="267">
      <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="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="caption"/>
      <w:lsdException w:name="Title"/>
      <w:lsdException w:name="Default Paragraph Font"/>
      <w:lsdException w:name="Subtitle"/>
      <w:lsdException w:name="Strong"/>
      <w:lsdException w:name="Emphasis"/>
      <w:lsdException w:name="Table Grid"/>
      <w:lsdException w:name="Placeholder Text"/>
      <w:lsdException w:name="No Spacing"/>
      <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="Colorful List"/>
      <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="Revision"/>
      <w:lsdException w:name="List Paragraph"/>
      <w:lsdException w:name="Quote"/>
      <w:lsdException w:name="Intense Quote"/>
      <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="Medium Shading 1 Accent 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:lsdException w:name="Subtle Emphasis"/>
      <w:lsdException w:name="Intense Emphasis"/>
      <w:lsdException w:name="Subtle Reference"/>
      <w:lsdException w:name="Intense Reference"/>
      <w:lsdException w:name="Book Title"/>
      <w:lsdException w:name="Bibliography"/>
      <w:lsdException w:name="TOC Heading"/>
    </w:latentStyles>
    <w:style w:type="paragraph" w:default="on" w:styleId="a">
      <w:name w:val="Normal"/>
      <wx:uiName wx:val="正文"/>
      <w:rsid w:val="001C5C68"/>
      <w:pPr>
        <w:widowControl w:val="off"/>
        <w:jc w:val="both"/>
      </w:pPr>
      <w:rPr>
        <wx:font wx:val="Calibri"/>
        <w:kern w:val="2"/>
        <w:sz w:val="21"/>
        <w:sz-cs w:val="22"/>
        <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
      </w:rPr>
    </w:style>
    <w:style w:type="character" w:default="on" w:styleId="a0">
      <w:name w:val="Default Paragraph Font"/>
      <wx:uiName wx:val="預設段落字型"/>
    </w:style>
    <w:style w:type="table" w:default="on" w:styleId="a1">
      <w:name w:val="Normal Table"/>
      <wx:uiName wx:val="普通表格"/>
      <w:rPr>
        <wx:font wx:val="Calibri"/>
        <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
      </w:rPr>
      <w:tblPr>
        <w:tblInd w:w="0" w:type="dxa"/>
        <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:style w:type="list" w:default="on" w:styleId="a2">
      <w:name w:val="No List"/>
      <wx:uiName wx:val="無列表"/>
    </w:style>
    <w:style w:type="paragraph" w:styleId="a3">
      <w:name w:val="header"/>
      <wx:uiName wx:val="頁首"/>
      <w:basedOn w:val="a"/>
      <w:link w:val="Char"/>
      <w:rsid w:val="00784607"/>
      <w:pPr>
        <w:pBdr>
          <w:bottom w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/>
        </w:pBdr>
        <w:tabs>
          <w:tab w:val="center" w:pos="4153"/>
          <w:tab w:val="right" w:pos="8306"/>
        </w:tabs>
        <w:snapToGrid w:val="off"/>
        <w:jc w:val="center"/>
      </w:pPr>
      <w:rPr>
        <wx:font wx:val="Calibri"/>
        <w:sz w:val="18"/>
        <w:sz-cs w:val="18"/>
      </w:rPr>
    </w:style>
    <w:style w:type="character" w:styleId="Char">
      <w:name w:val="頁首 Char"/>
      <w:basedOn w:val="a0"/>
      <w:link w:val="a3"/>
      <w:rsid w:val="00784607"/>
      <w:rPr>
        <w:sz w:val="18"/>
        <w:sz-cs w:val="18"/>
      </w:rPr>
    </w:style>
    <w:style w:type="paragraph" w:styleId="a4">
      <w:name w:val="footer"/>
      <wx:uiName wx:val="頁尾"/>
      <w:basedOn w:val="a"/>
      <w:link w:val="Char0"/>
      <w:rsid w:val="00784607"/>
      <w:pPr>
        <w:tabs>
          <w:tab w:val="center" w:pos="4153"/>
          <w:tab w:val="right" w:pos="8306"/>
        </w:tabs>
        <w:snapToGrid w:val="off"/>
        <w:jc w:val="left"/>
      </w:pPr>
      <w:rPr>
        <wx:font wx:val="Calibri"/>
        <w:sz w:val="18"/>
        <w:sz-cs w:val="18"/>
      </w:rPr>
    </w:style>
    <w:style w:type="character" w:styleId="Char0">
      <w:name w:val="頁尾 Char"/>
      <w:basedOn w:val="a0"/>
      <w:link w:val="a4"/>
      <w:rsid w:val="00784607"/>
      <w:rPr>
        <w:sz w:val="18"/>
        <w:sz-cs w:val="18"/>
      </w:rPr>
    </w:style>
    <w:style w:type="character" w:styleId="a5">
      <w:name w:val="Strong"/>
      <wx:uiName wx:val="要點"/>
      <w:basedOn w:val="a0"/>
      <w:rsid w:val="00784607"/>
      <w:rPr>
        <w:b/>
        <w:b-cs/>
      </w:rPr>
    </w:style>
    <w:style w:type="table" w:styleId="a6">
      <w:name w:val="Table Grid"/>
      <wx:uiName wx:val="網格型"/>
      <w:basedOn w:val="a1"/>
      <w:rsid w:val="00784607"/>
      <w:rPr>
        <wx:font wx:val="Calibri"/>
      </w:rPr>
      <w:tblPr>
        <w:tblInd w:w="0" w:type="dxa"/>
        <w:tblBorders>
          <w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
        </w:tblBorders>
        <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:shapeDefaults>
    <o:shapedefaults v:ext="edit" spidmax="5122"/>
    <o:shapelayout v:ext="edit">
      <o:idmap v:ext="edit" data="2"/>
    </o:shapelayout>
  </w:shapeDefaults>
  <w:docPr>
    <w:view w:val="print"/>
    <w:zoom w:percent="100"/>
    <w:doNotEmbedSystemFonts/>
    <w:bordersDontSurroundHeader/>
    <w:bordersDontSurroundFooter/>
    <w:defaultTabStop w:val="420"/>
    <w:drawingGridVerticalSpacing w:val="156"/>
    <w:displayHorizontalDrawingGridEvery w:val="0"/>
    <w:displayVerticalDrawingGridEvery w:val="2"/>
    <w:punctuationKerning/>
    <w:characterSpacingControl w:val="CompressPunctuation"/>
    <w:optimizeForBrowser/>
    <w:validateAgainstSchema/>
    <w:saveInvalidXML w:val="off"/>
    <w:ignoreMixedContent w:val="off"/>
    <w:alwaysShowPlaceholderText w:val="off"/>
    <w:hdrShapeDefaults>
      <o:shapedefaults v:ext="edit" spidmax="5122"/>
    </w:hdrShapeDefaults>
    <w:footnotePr>
      <w:footnote w:type="separator">
        <w:p wsp:rsidR="00D6766A" wsp:rsidRDefault="00D6766A" wsp:rsidP="00784607">
          <w:r>
            <w:separator/>
          </w:r>
        </w:p>
      </w:footnote>
      <w:footnote w:type="continuation-separator">
        <w:p wsp:rsidR="00D6766A" wsp:rsidRDefault="00D6766A" wsp:rsidP="00784607">
          <w:r>
            <w:continuationSeparator/>
          </w:r>
        </w:p>
      </w:footnote>
    </w:footnotePr>
    <w:endnotePr>
      <w:endnote w:type="separator">
        <w:p wsp:rsidR="00D6766A" wsp:rsidRDefault="00D6766A" wsp:rsidP="00784607">
          <w:r>
            <w:separator/>
          </w:r>
        </w:p>
      </w:endnote>
      <w:endnote w:type="continuation-separator">
        <w:p wsp:rsidR="00D6766A" wsp:rsidRDefault="00D6766A" wsp:rsidP="00784607">
          <w:r>
            <w:continuationSeparator/>
          </w:r>
        </w:p>
      </w:endnote>
    </w:endnotePr>
    <w:compat>
      <w:spaceForUL/>
      <w:balanceSingleByteDoubleByteWidth/>
      <w:doNotLeaveBackslashAlone/>
      <w:ulTrailSpace/>
      <w:doNotExpandShiftReturn/>
      <w:adjustLineHeightInTable/>
      <w:breakWrappedTables/>
      <w:snapToGridInCell/>
      <w:wrapTextWithPunct/>
      <w:useAsianBreakRules/>
      <w:dontGrowAutofit/>
      <w:useFELayout/>
    </w:compat>
    <wsp:rsids>
      <wsp:rsidRoot wsp:val="00784607"/>
      <wsp:rsid wsp:val="001C5C68"/>
      <wsp:rsid wsp:val="00676513"/>
      <wsp:rsid wsp:val="00784607"/>
      <wsp:rsid wsp:val="00912558"/>
      <wsp:rsid wsp:val="00D6766A"/>
      <wsp:rsid wsp:val="00E047A6"/>
      <wsp:rsid wsp:val="00F95F67"/>
    </wsp:rsids>
  </w:docPr>
  <w:body>
    <w:p wsp:rsidR="001C5C68" wsp:rsidRDefault="00784607" wsp:rsidP="00784607">
      <w:pPr>
        <w:jc w:val="center"/>
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:hint="fareast"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
      </w:pPr>
      <w:r wsp:rsidRPr="00E047A6">
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
        <w:t>表1:</w:t>
      </w:r>
      <w:r wsp:rsidR="00E047A6">
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:hint="fareast"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
        <w:t>${start}
</w:t>
      </w:r>
      <w:r wsp:rsidRPr="00E047A6">
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
        <w:t>時</w:t>
      </w:r>
      <w:r wsp:rsidRPr="00E047A6">
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:hint="fareast"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
        <w:t>--</w:t>
      </w:r>
      <w:r wsp:rsidR="00E047A6">
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:hint="fareast"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
        <w:t>${end}
</w:t>
      </w:r>
      <w:r wsp:rsidRPr="00E047A6">
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
        <w:t>時各區降雨量分佈(單位:毫米)</w:t>
      </w:r>
    </w:p>
    <w:p wsp:rsidR="00E047A6" wsp:rsidRPr="00E047A6" wsp:rsidRDefault="00E047A6" wsp:rsidP="00784607">
      <w:pPr>
        <w:jc w:val="center"/>
        <w:rPr>
          <w:rStyle w:val="a5"/>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體"/>
          <wx:font wx:val="宋體"/>
          <w:sz w:val="24"/>
          <w:sz-cs w:val="24"/>
        </w:rPr>
      </w:pPr>
    </w:p>
    <w:tbl>
      <w:tblPr>
        <w:tblW w:w="0" w:type="auto"/>
        <w:tblBorders>
          <w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
          <w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
        </w:tblBorders>
        <w:tblLook w:val="04A0"/>
      </w:tblPr>
      <w:tblGrid>
        <w:gridCol w:w="2130"/>
        <w:gridCol w:w="2130"/>
        <w:gridCol w:w="2131"/>
        <w:gridCol w:w="2131"/>
      </w:tblGrid>
      <w:tr wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidTr="00F95F67">
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2130" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00784607" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>區域</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2130" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00784607" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>平均雨量</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2131" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00784607" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>最大累積雨量</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2131" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00784607" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>最大小時滑動雨量</w:t>
            </w:r>
          </w:p>
        </w:tc>
      </w:tr>
 
 
 <#list list2 as test>
 
      <w:tr wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidTr="00F95F67">
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2130" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00912558" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>${test.area}</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2130" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00912558" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>${test.rain}</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2131" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00912558" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>${test.mrain}</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="2131" w:type="dxa"/>
          </w:tcPr>
          <w:p wsp:rsidR="00784607" wsp:rsidRPr="00F95F67" wsp:rsidRDefault="00912558" wsp:rsidP="00F95F67">
            <w:pPr>
              <w:jc w:val="center"/>
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
            </w:pPr>
            <w:r wsp:rsidRPr="00F95F67">
              <w:rPr>
                <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體" w:cs="Times New Roman" w:hint="fareast"/>
                <wx:font wx:val="宋體"/>
                <w:sz-cs w:val="21"/>
              </w:rPr>
              <w:t>${test.mir}</w:t>
            </w:r>
          </w:p>
        </w:tc>
      </w:tr>
 
 
 </#list>
 
    </w:tbl>
    <w:p wsp:rsidR="00784607" wsp:rsidRPr="00784607" wsp:rsidRDefault="00784607" wsp:rsidP="00784607">
      <w:pPr>
        <w:jc w:val="left"/>
        <w:rPr>
          <w:rFonts w:ascii="宋體" w:fareast="宋體" w:h-ansi="宋體"/>
          <wx:font wx:val="宋體"/>
          <w:sz-cs w:val="21"/>
        </w:rPr>
      </w:pPr>
    </w:p>
    <w:sectPr wsp:rsidR="00784607" wsp:rsidRPr="00784607" wsp:rsidSect="001C5C68">
      <w:pgSz w:w="11906" w:h="16838"/>
      <w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/>
      <w:cols w:space="425"/>
      <w:docGrid w:type="lines" w:line-pitch="312"/>
    </w:sectPr>
  </w:body>
</w:wordDocument>




在yuqing2.jsp中:(部分程式碼)


<!-- 2017.05.02 新增 -->
<input id="day" hidden="true"  value="${day }"/>
<input id="end" hidden="true"  value="${end }"/>
<a href="javascript:void(0)" style="width: 120px;height: 22px;" class="easyui-linkbutton"  onclick="table01()">匯出到Word</a><br/><br/>
<!-- 2017.05.02 結束 -->


在export.js中:
function table01(){
var stime = $('#day').val();
var etime = $('#end').val();
$.ajax({
type:"POST",
url:path+"/yuqing/table01",
data:{
stime:stime,
etime : etime
},
cache:false,
dataType:"json",
async:false,
success:function(data){
if(data==1){
alert("匯出成功!檔案存放到桌面!");
}
else{
alert("匯出失敗!");
}
}
});
}


在YuqingController.java中:(部分程式碼)
@RequestMapping(value ="/table06")
public @ResponseBody String table06(HttpServletRequest request,HttpServletResponse response,Model model){
//匯出程式碼:開始
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8"); //設定編碼
Map<String,Object> dataMap=new HashMap<String,Object>();
dataMap.put("start", stime); //開始日期
dataMap.put("end", etime); //結束日期

List<Map<String,Object>> list2 = new ArrayList<Map<String,Object>>();
for(int i=0;i<list.size();i++) { //遍歷結果
Map<String,Object> map = new HashMap<String,Object>();
map.put("area", list.get(i).getArea().toString());
map.put("rain",list.get(i).getRain().toString());
map.put("mrain", list.get(i).getMrain().toString());
map.put("mir",list.get(i).getMir().toString());

list2.add(map);
}
dataMap.put("list2", list2);
configuration.setDirectoryForTemplateLoading(new File("F:\\4\\")); //絕對路徑
Template t2=null;
try {
t2 = configuration.getTemplate("table01.ftl"); //ftl檔名
} catch (IOException e) {
e.printStackTrace();
}


File outFile = new File("C:/Users/Administrator/Desktop/word"+Math.random()*10000+".doc"); //桌面路徑
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));

} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
 
try {
t2.process(dataMap, out);
out.close();  //輸出流一定要關閉;否則,生成的word文件打不開
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//匯出程式碼:結束
return "1";
}


五、匯出結果如下圖:
六、參考程式碼如下:


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;


public class WordTest {

private Configuration configuration = null;

public WordTest(){
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}

public static void main(String[] args) {
WordTest test = new WordTest();
test.createWord();
}

public void createWord(){
Map<String,Object> dataMap=new HashMap<String,Object>();
getData(dataMap);
configuration.setClassForTemplateLoading(this.getClass(), "/com");  //FTL檔案所存在的位置
//configuration.setDirectoryForTemplateLoading(new File("F:\\4\\")); //絕對路徑
Template t=null;
try {
t = configuration.getTemplate("wordModel.ftl"); //檔名
} catch (IOException e) {
e.printStackTrace();
}
File outFile = new File("O:/outFilessa"+Math.random()*10000+".doc");
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
 
        try {
t.process(dataMap, out);
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}


private void getData(Map<String, Object> dataMap) {
dataMap.put("title", "標題");
dataMap.put("year", "2017");
dataMap.put("month", "05");
dataMap.put("day", "03");
dataMap.put("auditor", "XXX");
dataMap.put("phone", "XXXXXXXXXX");
dataMap.put("weave", "XXX");

List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
for (int i = 0; i < 10; i++) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("number", i);
map.put("content", "內容"+i);
list.add(map);
}

dataMap.put("list", list);
}

}

相關推薦

JAVA利用FreeMarker生成匯出Word

一、首先下載相對應的jar包:freemarker.jar; 而我的專案環境是:maven 在pom.xml中: <dependency> <groupId>freemarker</groupId> <artifactId>f

MS Office 自動化程式設計---Word的讀寫

示例一:儲存至Word 經過一些瞭解之後,就不需要每次都將所有的介面匯入工程了。可以根據需要匯入,此次匯入的介面為: Application、_Document、Documents、Range。新建基於對話方塊的MFC工程,引入標頭檔案,關鍵程式碼如下: void CWor

phpword 利用phpword將資訊匯出word進行下載

前幾天需要一個功能,就是把填寫得資訊(文字圖片)匯出到word,對於我這個小白來說無比的艱難,幸好有前輩得幫助。也希望能幫助更多的人~首先下載phpword  https://download.csdn.net/download/qq_34285103/10461489放到一

java利用Freemarker模板生成docx格式的word

之前寫過一篇利用Freemarker模板生成doc的部落格,不過那個部落格有點缺陷,生成的word佔用的空間很大,幾百頁的word有將近100M了。所以,後面需求必須是生成的docx文件,結果匯出後正常才幾M,昨天花了一天的時間實現。 具體思路 1.把docx文件修改為ZIP格式(修改

java 如何隨機生成取出一個數組中的一個數,並且一次取一個直到取

問題描述 我想得到的是特定數,可能不是連續的,而且 數是取出的。 程式碼 private static int[] randomCreate(int [] rands) { int[] outArr = new int[rands.length];//創造一個用於接收的陣列

dom4j格式化美化生成匯出的xml

引用jar包:dom4j-1.6.1-sources.jar 方法實現: private String xmlPretty(Document document) { OutputFormat format = OutputFormat.createPrettyPr

Java】「深入理解Java虛擬機」學習筆記4- 類結構

jruby idt this 原因 cal constant borde ESS groov   我為什麽喜歡Java,另重要原因就是跨平臺,就是WORA。   程序員是爽了,但肯定有人要為你遮風擋雨,解決WORA的基石就是字節碼+虛擬機。 ?Tip   Java生

java學習筆記之webservice--WSDL及用myeclipse測試webservice

 >>接上篇 一、WSDL 定義:web services description language,用來描述web服務的xml格式的資訊。 標籤的解釋 1. <types>:定義了服務的namespace和關鍵資訊的型別(方法的引數型別和返回值的

C#操作Word總結——設定格式並新增文字內容、超連結、新增圖片

      設定文件格式並新增內容 #region 設定文件格式並新增文字內容、超連結 /// <summary> /// 設定文件格式並新增內容 /// </summary> /// <param name="filePath">檔名&

C# 操作word總結——建立和新增頁首頁尾

      最近程式中經常使用到word的操作,我在網上查了一些資料,在這裡整理一下。       使用程式碼建立word文件: #region 新建Word文件 /// <summary> /// 動態生成Word文件並填充內容 /// </summa

系統移植2——根系統的兩種格式

根文件系統 鏡像 文件夾一:鏡像格式的根文件系統 (1)鏡像文件的根文件系統的主要作用是用來以後燒錄到塊設備上面的,塊設備上的內核啟動後去掛載它。 (2)鏡像形式的根文件系統是由文件夾格式的根文件系統通過特定的工具(mke2fs)制作得到的 (3)鏡像文件系統具有一定的格式,格式是內化的

系統移植1——根系統介紹

根文件系統介紹一:什麽是根文件系統 (1)首先明白一點,我們的文件在硬盤上的存儲並非是連續存放的,而是零散的存放在硬盤中的某些空余扇區中的,這就導致了我們很難去查看我們存放的文件(因為人無法記住所有文件存放在哪些扇區,已經扇區的順序),這時就有了我們的文件系統,所以簡單來講,文件系統就是對一個存儲設備上

Zookeeper--配置講解、客戶端使用

臨時 結束 java .com per 客戶端使用 .cn 事務 客戶端 Java操作zookeeper 創建節點 創建子節點 CreateMode.EPHEMETAL臨時節點保證本次回話有效,本次會話結束臨時節點消失,可以實現分布式事務鎖

Nginx-- 配置之Rewrite

log 技術分享 判斷 placement ble png per 大小寫 遠程 Rewrite支持URL重寫 1.常用指令以及語法   1) if指令    if語法: if 空格 (condition) {}    條件:    1. &ld

PHP關於1 寫入 權限 三、鎖定

tex title eas add not 覆蓋 popu col could not 一、文件權限 總之中的一個切都是為了保證文件夾的安全,保證文件夾的安全比保證文件的安全更重要。 二、寫入文件 file_put_contents($file,$da

Spring Boot 揭秘與實戰 配置篇 - 有哪些很棒的特性

real randint 開發人員 hat mod 配置管理 bsp footer tar 文章目錄 1. 使用屬性文件2. YAML文件 1.1. 自定義屬性 1.2. 參數引用 1.3. 隨機數屬性 1.4. application-{profile}.proper

第9章 應用層5_傳輸協議FTP

public 被動模式 更多 保留 允許 服務器端 磁盤 stat 命令 6. 文件傳輸協議FTP 6.1 FTP主動和被動模式 (1)FTP協議   ①與其他協議不同,FTP協議在客戶端訪問FTP服務器時需要建立兩個TCP連接。一個用來傳輸FTP命令,一個用來傳輸數據。

Solr 6.7學習筆記02-- 配置 managed-schema (schema.xml) - filter5

schema load lis field folding factor 文件 iter tap 自定義fieldType時,通常還會用到filter。filter必須跟在tokenizer或其它filter之後。如: <fieldType> <

Spring Boot幹貨系列:配置解析

set test profile ava java prefix 標註 了解 pre Spring Boot:配置文件解析 前言 上一篇介紹了Spring Boot的入門,知道了Spring Boot使用“習慣優於配置”(項目中存在大量的配置,此外

利用python生成交換機的VRF配置

cnblogs pan 運行 成交 交換機 sting write quit spa 為了快速生成有規律的VRF,寫了一個python腳本,可以快速生成如下的VRF配置。 ip vpn-instance vpn0ipv4-family route-distinguish