java导出word使用FreeMarker方式导出

本文详细介绍了如何使用Java结合FreeMarker模板引擎来导出Word文档。首先,需要将.docx模板转换为.xml,然后用Visual Studio Code进行格式化并保存为.ftl文件。在模板中填充字段,并解决对勾符号和图片插入的问题。代码部分包括数据处理、图片读取和保存,以及Word文件的创建。最后提供了前端接口的说明和完整的FreeMarker模板文件链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

public.docx文件就是需要导出的模板

1.pom依赖

2.将public.docx文件保存为public.xml

3.使用Visual Studio Code打开public.xml

需要格式化文档,这是Visual Studio Code的一个插件,不知道需要自己去安装插件。

4.格式化后文件,保存格式为public.ftl格式

5.打开文件,填写字段

把多余的删除改成如下

然后写入以下判断,这是单个值的填写方式,需要先判断是否为null,

其他的单个值的都如上填写

介绍如何填写对勾,才是难点,由于需要打√,找了好久,决定使用word自带的图标搞定这个对勾【<w:sym w:font="Wingdings" w:char="F0FE"/>】

修改这部分改为

                                <#if satisfactory??>
                                    <#if satisfactory == "0">
                                        <w:t>是</w:t>
                                        <w:sym w:font="Wingdings" w:char="F0FE"/>
                                        <w:t>否</w:t>
                                        <w:sym w:font="Wingdings" w:char="F0A8"/>
                                    <#else>
                                        <w:t>是</w:t>
                                        <w:sym w:font="Wingdings" w:char="F0A8"/>
                                        <w:t>否</w:t>
                                        <w:sym w:font="Wingdings" w:char="F0FE"/>
                                    </#if>
                                <#else>
                                    <w:t>是□否□</w:t>
                                </#if>

其他的 “是否” 的都如上填写

添加图片:“单位营业执照”为例子

放在<w:tabl>中我粘贴了整个tabl,

            <w:tbl>
                <w:tblPr>
                    <w:tblStyle w:val="a10"/>
                    <w:tblW w:w="8527" w:type="dxa"/>
                    <w:tblInd w:w="729" w:type="dxa"/>
                    <w:tblBorders>
                        <w:top 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:bottom 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: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:tblBorders>
                    <w:tblLayout w:type="Fixed"/>
                    <w:tblCellMar>
                        <w:top w:w="0" w:type="dxa"/>
                        <w:left w:w="108" w:type="dxa"/>
                        <w:bottom w:w="0" w:type="dxa"/>
                        <w:right w:w="108" w:type="dxa"/>
                    </w:tblCellMar>
                </w:tblPr>
                <w:tblGrid>
                    <w:gridCol w:w="8527"/>
                </w:tblGrid>

                <#if businessLicensePhotoImages??>
                    &
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值