FreeMark模板方式生成doc文档标签问题汇总

1、标签含义

<w:tbl> 表格开始标志
  <w:tblPr>表格属性
    <w:tblW w:w=“0” w:type=“auto”/>这个type=还可以使用“pct”根据窗口调整
    <w:jc w:val=“center”/>表格居中
    <w:tblBorders>边框线
      <w:top w:val=“single” w:sz=“4” wx:bdrwidth=“10” w:space=“0” w:color=“auto”/> 上边线
      <w:bottom w:val=“single” w:sz=“4” wx:bdrwidth=“10” w:space=“0” w:color=“auto”/>下边线
      <w:insideH w:val=“single” w:sz=“4” wx:bdrwidth=“10” w:space=“0” w:color=“auto”/>横线       <w:insideV w:val=“single” w:sz=“4” wx:bdrwidth=“10” w:space=“0” w:color=“auto”/>竖线
      <w:left w:val=“single” w:sz=“4” wx:bdrwidth=“10” w:space=“0” w:color=“auto”/> 左边线
      <w:right w:val=“single” w:sz=“4” wx:bdrwidth=“10” w:space=“0” w:color=“auto”/>右边线
    </w:tblBorders>边框线属性结束
  </w:tblPr>表格属性结束

<w:tr >表格加一行
<w:trPr>行属性开始
  </w:trPr>行属性结束
  <w:tc> 表格加一列
    <w:tcPr> 单元格属性,由X行Y列决定在这一行中新加的一列就是一个单元格
       <w:tcW w:w=“2490” w:type=“dxa” /> 单元格宽
       <w:gridSpan w:val="2"/> //设置当前位置跨两列合并
    </w:tcPr>
    <w:p >单元格中加一段落
      <w:pPr>段落属性
        <w:jc w:val=“center”/>居中
      </w:pPr>
      <w:r>段落中文字行开始
         <w:t>内容</w:t>
      </w:r>段落中文字行结束,如果要换行可重复       
    </w:p>
  </w:tc>完成一个单元格

  <w:tc> 新单元格,不指定单元格属性,则默认居左。
    <w:p >
      <w:r>
        <w:t>第二列</w:t>
      </w:r>
    </w:p>
  </w:tc>  
</w:tr>第一行第二列完成
</w:tbl>表格结束

2、注意:

(1)、表格行高自动

<w:tr wsp:rsidR="001E0194" wsp:rsidTr="001E0194">
               <w:trPr>
                   <w:trHeight w:h-rule="exact" w:val="340"/>  // 该标签是设置表格行高的, 去掉之后会随着表格内容长度而自适应高度
                   <w:jc w:val="center"/>
                </w:trPr>  
</w:tr>

(2)、 <w:p>标签会独占一行

(3)、<w:tc>标签的子标签中一定要有一个<w:p>标签,要不然生成的doc文档没法打开,报错为: <p>元素必须位于</tc>元素之前

(4)、设置表格内边距office2016版设置为0.1cm. 不固定行高时,字会挨着内行

<w:tblCellMar>
        <w:top w:w="57" w:type="dxa"/>
        <w:bottom w:w="57" w:type="dxa"/>
</w:tblCellMar>

(5)、设置段落行边距

<w:p wsp:rsidR="001E0194" wsp:rsidRDefault="001E0194" wsp:rsidP="001E0194">
            <w:pPr>
                <w:pStyle w:val="1"/>
                <w:rPr>
                    <wx:font wx:val="宋体"/>
                </w:rPr>
                <w:spacing w:before="0" w:after="0" w:line="360" w:line-rule="auto"/> //设置1.5倍行间距
            </w:pPr>
            <aml:annotation aml:id="0" w:type="Word.Bookmark.Start" w:name="_Toc513704101"/>
            <w:r>
                <w:rPr>
                    <w:rFonts w:hint="fareast"/>
                    <wx:font wx:val="宋体"/>
                </w:rPr>
            </w:r>
            <aml:annotation aml:id="0" w:type="Word.Bookmark.End"/>
  </w:p>

(6)、列合并

<w:tcPr>
              <w:tcW w:w="6294" w:type="dxa"/>
              <w:gridSpan w:val="2"/> //设置所在行的1, 2列合并
</w:tcPr>

(7)、设置居中显示

<w:jc w:val="center"/> //居中显示代码

(8)、换页显示

<w:br w:type="page"/>

(9)、合并单元格

<w:vmerge /> 或者<w:vmerge w:val="restart"/>

(10)、图片《制作模板时需提前在指定位置放一张图片进行占位》将图片转成 base64 编码  然后将base64  加载到模板文件中

<w:r>
       <w:pict> 
            //注意 binData 标签之间不可有空格 
       <w:binData w:name="wordml://02000002.jpg" xml:space="preserve">${sign2}</w:binData> // 可在 style 设置图片的大小
       <v:shape id="_x0000_i1022" type="#_x0000_t75" style="175.8pt;height:76.2pt;visibility:visible;mso-wrap-style:square"> <v:imagedata src="wordml://02000002.jpg" o:title="953631bb5aac42c88b33f688913220e2"/> </v:shape> </w:pict> </w:r>

(11)、特殊字符处理

导出word 是,如果模板中含有 < 、>、&,,那么导出的word  无法打开  

转义字符对应的特殊符号:
&lt; 对应< ,  &gt; 对应> ,  &amp;对应&

  

 参考:https://blog.csdn.net/qq_34091758/article/details/81505042

原文地址:https://www.cnblogs.com/wongzzh/p/15137399.html