FreeMarker 导出word表格,怎么导出就不说了,往上一大堆,主要记录一下合并行和列,有说的不对的地方希望大家指点
合并行
开始合并标记:<w:vmerge w:val="restart"/>
结束合并:<w:vmerge/>
注意大小写,有的大写M,试了下并不管用,可能和版本有关系(我用的是2.3.20),标记的写入都是在<w:tcW >
后边,我也不清除这个标签具体是什么意思,还没来得及去看,有大佬知道记得留言 学习学习哈哈
<w:tc> <#--一个tc代表一个单元格-->
<w:tcPr>
<w:tcW w:w="508" w:type="dxa"/>
<#if item.week!=weekflag> <#--weekflag是我在循环外定义的一个遍历,用来记录上一次循环的值,第一次进来,直接开始写入合并标记-->
<w:vmerge w:val="restart"/>
<#else>
<#--第二次相等时,结束合并-->
<w:vmerge/>
</#if>
<#assign weekflag=item.week> <#--在循环的底部赋值-->
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:pStyle w:val="a8"/>
<w:keepNext w:val="off"/>
<w:keepLines w:val="off"/>
<w:widowControl/>
<w:supressLineNumbers w:val="off"/>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/>
<w:tabs>
<w:tab w:val="left" w:pos="916"/>
<w:tab w:val="left" w:pos="1832"/>
<w:tab w:val="left" w:pos="2748"/>
<w:tab w:val="left" w:pos="3664"/>
<w:tab w:val="left" w:pos="4580"/>
<w:tab w:val="left" w:pos="5496"/>
<w:tab w:val="left" w:pos="6412"/>
<w:tab w:val="left" w:pos="7328"/>
<w:tab w:val="left" w:pos="8244"/>
<w:tab w:val="left" w:pos="9160"/>
<w:tab w:val="left" w:pos="10076"/>
<w:tab w:val="left" w:pos="10992"/>
<w:tab w:val="left" w:pos="11908"/>
<w:tab w:val="left" w:pos="12824"/>
<w:tab w:val="left" w:pos="13740"/>
<w:tab w:val="left" w:pos="14656"/>
</w:tabs>
<w:rPr>
<w:rFonts w:fareast="宋体" w:hint="default"/>
<w:b/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:fareast="宋体" w:hint="fareast"/>
<w:b/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${item.week}</w:t>
</w:r>
</w:p>
</w:tc>
在这里插入代码片
我的逻辑是两行合并一次;
合并列
开始合并标记:<w:gridSpan w:val="2">
结束合并:</w:gridSpan>
2 是代表合并列的数量
开始标记和结束标记需要写在不同的单元格内,即<w:tc>
内,两个标签的间隔单元格就是合并的单元格的数量
<w:tc>
<w:tcPr>
<w:tcW w:w="650" w:type="dxa"/>
<#--这里是当前循环的属性做了比较->
<#if item.position==item.position2 && item.duty="晚上">
<w:gridSpan w:val="2">
</#if>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:jc w:val="center"/>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:b/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:b/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${item.position}</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="636" w:type="dxa"/>
<#--每天的晚上结束合并-->
<#if item.position==item.position2 && item.duty="晚上">
</w:gridSpan>
</#if>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:jc w:val="center"/>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:b/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="fareast"/>
<w:b/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${item.position2}</w:t>
</w:r>
</w:p>
</w:tc>