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


    依赖: freemarker

    1. <dependency>
    2. <groupId>org.freemarkergroupId>
    3. <artifactId>freemarkerartifactId>
    4. <version>2.3.31version>
    5. dependency>

    代码展示

    1. import freemarker.template.Configuration;
    2. import freemarker.template.Template;
    3. import freemarker.template.TemplateException;
    4. import java.io.FileWriter;
    5. import java.io.IOException;
    6. import java.io.StringWriter;
    7. import java.util.HashMap;
    8. import java.util.Map;
    9. /**
    10. * @Description:
    11. * @Author zhou
    12. * @Date 2023/9/26 - 13:19
    13. */
    14. public class TestXMLtoWord {
    15. public static void main(String[] args) {
    16. Map dataModel = getMapData();
    17. try {
    18. // 创建FreeMarker配置
    19. Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
    20. // 设置模板文件的位置
    21. cfg.setClassForTemplateLoading(TestXMLtoWord.class, "/templates");
    22. // 获取模板
    23. Template template = cfg.getTemplate("name.xml");
    24. // 使用FreeMarker渲染模板并将内容添加到Word文档
    25. StringWriter writer = new StringWriter();
    26. // 替换关键字
    27. template.process(dataModel, writer);
    28. // .doc .docx .xml 等文件都可以,只需要修改后缀
    29. try (FileWriter fileWriter = new FileWriter("output.doc")) {
    30. fileWriter.write(writer.toString());
    31. } catch (IOException e) {
    32. e.printStackTrace();
    33. }
    34. System.out.println("Word文档已生成成功!");
    35. } catch (IOException | TemplateException e) {
    36. e.printStackTrace();
    37. }
    38. }
    39. // 创建数据模型
    40. public static Map getMapData() {
    41. Map dataModel = new HashMap<>();
    42. dataModel.put("CREATE_MAN", "zhou");
    43. dataModel.put("CHECK_MAN", "zhou");
    44. dataModel.put("d1_operate_time_1", "test1");
    45. dataModel.put("d1_operate_time_2", "test2");
    46. dataModel.put("d1_operate_time_3", "test3");
    47. dataModel.put("d1_file_num_last_1", "tes1232t");
    48. dataModel.put("d1_file_num_last_2", "tes321t");
    49. dataModel.put("d1_file_num_last_3", "t111est");
    50. dataModel.put("d1_file_size_last_1", "tes222t");
    51. dataModel.put("d1_file_size_last_2", "te44st");
    52. dataModel.put("d1_file_size_last_3", "te33st");
    53. dataModel.put("d1_file_num_1", "te11st");
    54. dataModel.put("d1_file_num_2", "tes22t");
    55. dataModel.put("d1_file_num_3", "te33st");
    56. dataModel.put("d1_file_size_1", "te666st");
    57. dataModel.put("d1_file_size_2", "t222st");
    58. dataModel.put("d1_file_size_3", "te111st");
    59. return dataModel;
    60. }
    61. }

    文件展示

    name.xml:word另存为xml文件

    位置:\src\main\resources\templates

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

  • 相关阅读:
    基于单片机设计的气压与海拔高度检测计(采用MPL3115A2芯片实现)
    猿创征文 第二季| #「笔耕不辍」--生命不息,写作不止#
    解决虚拟机centos8无法连接外网,ping: www.baidu.com: 未知的名称或服务
    Linux 回顾总结
    golang获取postgres或clickhouse连接
    DITA-OT 4.0新特性 - PDF themes,定制PDF样式的新方法
    高效,可靠,安全的串口通讯开源方案
    祝所有的程序猿们2023年的1024节快乐~
    计算机毕业设计(附源码)python智能化管理的仓库管理
    react中hooks闭包
  • 原文地址:https://blog.csdn.net/Aoutlaw/article/details/133312954