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>
相关文章
|
7月前
|
Java
Springboot 导出word,动态填充表格数据
Springboot 导出word,动态填充表格数据
|
XML 数据格式
Freemarker填充数据到word模板中
Freemarker填充数据到word模板中
132 1
|
7月前
|
Java Apache 索引
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
1020 0
|
7月前
|
小程序
06 - table表格标签+ 行合并+列合并
06 - table表格标签+ 行合并+列合并
133 0
|
前端开发 easyexcel Java
EasyExcel解析动态表头及导出
excel文件导入及导出,是日常开发中经常遇到的需求。本次笔者以EasyExcel为例,针对在项目中遇到的动态表头解析及导出的场景,详细介绍具体的代码实现过程。
3338 0
EasyExcel解析动态表头及导出
|
Java Maven
使用EasyPOI导出复杂的Word表格
使用EasyPOI导出复杂的Word表格
3602 0
使用EasyPOI导出复杂的Word表格
poi 生成word 表格,并向表格单元格中插入多个图片
poi 生成word 表格,并向表格单元格中插入多个图片
471 0
poi 生成word 表格,并向表格单元格中插入多个图片
|
Rust 自然语言处理 算法
【算法】2194. Excel 表中某个范围内的单元格(多语言实现)
Excel 表中的一个单元格 (r, c) 会以字符串 "<col><row>" 的形式进行表示,其中: <col> 即单元格的列号 c 。用英文字母表中的 字母 标识。 例如,第 1 列用 'A' 表示,第 2 列用 'B' 表示,第 3 列用 'C' 表示,以此类推。 <row> 即单元格的行号 r 。第 r 行就用 整数 r 标识。 给你一个格式为 "<col1><row1>:<col2><row2>" 的字符串 s ,其中 <col1> 表示 c1 列,<row1> 表示 r1 行,<col2> 表示 c2 列,<row2> 表示 r2 行,并满足
【算法】2194. Excel 表中某个范围内的单元格(多语言实现)
HTML表格合并行和列
1.合并行:rowspan 在设计表格时,有时我们需要将“横向的N个单元格”或者“纵向的N个单元格”合并成一个单元格(类似Word的表格合并),这个时候就需要用到“合并行”或“合并列” 在HTML中,我们可以使用rowspan属性来合并行。所谓的合并行,指的是将“纵向的N个单元格”合并 实例:
337 0
HTML表格合并行和列
|
C#
C# 操作Word文本框——插入表格/读取表格/删除表格
在文本框中,我们可以操作很多元素,如文本、图片、表格等,在本篇文章中将着重介绍如何插入表格到文本框,插入的表格我们可以对表格进行格式化操作来丰富表格内容。此外,对于文本框中的表格内容,我们也可以根据需要来读取表格或者删除表格。
1492 0

热门文章

最新文章