java: 通过xml模板转成word文件

依赖: freemarker

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version> <!-- 请根据您的需求选择最新版本 -->
        </dependency>

代码展示

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description:
 * @Author zhou
 * @Date 2023/9/26 - 13:19
 */
public class TestXMLtoWord {
    public static void main(String[] args) {
        Map<String, Object> dataModel = getMapData();
        try {
            // 创建FreeMarker配置
            Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);

            // 设置模板文件的位置
            cfg.setClassForTemplateLoading(TestXMLtoWord.class, "/templates");
            // 获取模板
            Template template = cfg.getTemplate("name.xml");

            // 使用FreeMarker渲染模板并将内容添加到Word文档
            StringWriter writer = new StringWriter();
            // 替换关键字
            template.process(dataModel, writer);
            // .doc .docx .xml 等文件都可以,只需要修改后缀
            try (FileWriter fileWriter = new FileWriter("output.doc")) {
                fileWriter.write(writer.toString());
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("Word文档已生成成功!");
        } catch (IOException | TemplateException e) {
            e.printStackTrace();
        }
    }

    // 创建数据模型
    public static Map<String, Object> getMapData() {
        Map<String, Object> dataModel = new HashMap<>();
        dataModel.put("CREATE_MAN", "zhou");
        dataModel.put("CHECK_MAN", "zhou");

        dataModel.put("d1_operate_time_1", "test1");
        dataModel.put("d1_operate_time_2", "test2");
        dataModel.put("d1_operate_time_3", "test3");

        dataModel.put("d1_file_num_last_1", "tes1232t");
        dataModel.put("d1_file_num_last_2", "tes321t");
        dataModel.put("d1_file_num_last_3", "t111est");

        dataModel.put("d1_file_size_last_1", "tes222t");
        dataModel.put("d1_file_size_last_2", "te44st");
        dataModel.put("d1_file_size_last_3", "te33st");

        dataModel.put("d1_file_num_1", "te11st");
        dataModel.put("d1_file_num_2", "tes22t");
        dataModel.put("d1_file_num_3", "te33st");

        dataModel.put("d1_file_size_1", "te666st");
        dataModel.put("d1_file_size_2", "t222st");
        dataModel.put("d1_file_size_3", "te111st");

        return dataModel;
    }
}

文件展示

name.xml:word另存为xml文件

位置:\src\main\resources\templates

output.doc: .doc .docx .xml 等文件都可以,只需要修改后缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值