FreeMarker 导出word,合并行和列

简介: FreeMarker 导出word,合并行和列

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>
相关文章
|
18天前
|
Java
Springboot 导出word,动态填充表格数据
Springboot 导出word,动态填充表格数据
|
1月前
|
SQL C# 数据库
C# 读取多条数据记录导出到 Word 标签模板
C# 读取多条数据记录导出到 Word 标签模板
|
7月前
|
XML 数据格式
Freemarker填充数据到word模板中
Freemarker填充数据到word模板中
78 1
|
3月前
|
小程序
06 - table表格标签+ 行合并+列合并
06 - table表格标签+ 行合并+列合并
|
5月前
|
JSON 前端开发 JavaScript
Bootstrap Table表格分页的使用及分页数据(Excel)导出
Bootstrap Table表格分页的使用及分页数据(Excel)导出
59 0
|
8月前
vue-mergeable-table 动态生成的可合并行列的表格
vue-mergeable-table 动态生成的可合并行列的表格
79 0
|
easyexcel
你要的不固定列excel导入导出,它来啦!(四)
在上篇文章中,我们简单的介绍了 excel 导入导出技术实践方案,就目前而已,使用最多的开源框架主要有以下三类,分别是:
|
10月前
|
Java BI
iText导出PDF多表格
iText导出PDF多表格
151 0
|
10月前
|
算法 前端开发
前端算法-Excel表的列名称
前端算法-Excel表的列名称
|
Java Maven
使用EasyPOI导出复杂的Word表格
使用EasyPOI导出复杂的Word表格
2837 0
使用EasyPOI导出复杂的Word表格