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="width: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 无法打开
转义字符对应的特殊符号:
< 对应< , > 对应> , &对应&
参考:https://blog.csdn.net/qq_34091758/article/details/81505042