java根据word模板导出word文件

本文介绍如何使用Java根据Word模板生成Word文件。步骤包括:1)在Word模板中设置占位变量;2)将Word另存为XML并替换占位符;3)将文件扩展名改为.ftl;4)引入frameMark库;5)详细说明Java处理过程,涉及数据封装到Map、创建Configuration对象、设置编码、加载模板和合并数据。最后提供了完整代码示例,可根据需求选择配置方法。

1、word模板文件处理,如下图所示在word 文档中填值的地方写入占位变量

2、将word文档另存为xml文件、编辑如下图,找到填写的占位,修改为${bcrxm}格式

3、将文件后缀名改为.ftl文件

4、java处理过程 、 引入frameMark jar 包

5、java代码

一、将需要填充的数据封装到map中、与模板中的占位对应、为什么用map 我也不知道。

二、创建configuration对象

三、设置编码 utf-8

四、获取模板 configuration.setDirectoryForTemplateLoading() 方法、configuration.getTemplate()方法

五、将模板和数据模型合并生成文件 template.process(map, out); //map为封装的数据、out为输出流对象

6、完整代码、configuration.setClassForTemplateLoading 方法有不同的使用方式、可以根据自己的需要选择、具体使用方法、问度娘。

public static  String createWord1(Map dataMap,String templateName,String filePath,String fileName,HttpServletRequest request,HttpServletResponse response){
            String    fileOnlyName=null;
            try {
                //创建配置实例 
                Configuration configuration = new Configuration();
                
                //设置编码
                configuration.setDefaultEncoding("UTF-8");
                
                //ftl模板文件统一放至 template 包下面
                configuration.setClassForTemplateLoading(Util.class,"/template/");
                
                //获取模板 
                Template template = configuration.getTemplate(templateName,"UTF-8");
                //重命名
                fileOnlyName = rename(fileName);
                //定义路径 统一放到 webappo/hgjc/uploadRoot目录下
                String servicePath = request.getSession().getServletContext().getRealPath(File.separator);
                String basePath = ReadConfig.getConfigValue("uploadRoot")+File.separator+ReadConfig.getConfigValue(filePath)+File.separator+fileOnlyName; 
                //输出文件
                File outFile = new File(servicePath+basePath);
                
                //如果输出目标文件夹不存在,则创建
                if (!outFile.getParentFile().exists()   ){
                    outFile.getParentFile().mkdirs();
                }
                
                //将模板和数据模型合并生成文件 
                Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
                
                
                //生成文件
                template.process(dataMap, out);
                //关闭流
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return fileOnlyName;
        }

参考:https://www.cnblogs.com/vitre/p/5619479.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值