FreeMarker 导出word,合并行和列

December 17, 2023
测试
测试
测试
测试
18 分钟阅读

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>

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多