java根据模板生成world文件

2023-11-12

首先找一个world文件模板修改一下
类似如下图修改

在这里插入图片描述

修改完之后保存文件先保存xml文件之后修改ftl后缀名

在这里插入图片描述
保存成xml之后,有的时候改的有问题,需要使用文本查看器修改
手动的修改完整为${gongchenmingchen}这样的,所以需要辛苦检查一下

在这里插入图片描述

在这里插入图片描述

修改完之后

接下来就是操作文件模板生成world文件

以下是工具类

package com.example.demo;

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


import java.io.*;
import java.util.Map;

/**
 * @author 
 * @date 
 * @apiNote 生成动态文档帮助类
 */

public class WordUtil {

    private Configuration configuration = null;

    /*
     * 模板文件存放的目录
     */
    private String baseDir;

    /*
     * 模板文件名称
     */
    private String templateFile;

    /*
     * word生成的输出目录
     */
    private String outputDir;

    public WordUtil(){
        configuration = new Configuration();
        configuration.setDefaultEncoding("UTF-8");
    }

    /*
     * <p>转换成word<br>
     */
    public String createWord(Map<String,Object> dataMap){

        configuration.setClassForTemplateLoading(this.getClass(), "");//模板文件所在路径

        Template t = null;

        try {
            //得到模板文件
            configuration.setDirectoryForTemplateLoading(new File(baseDir));
            t = configuration.getTemplate(templateFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        File outFile = new File(outputDir+ System.currentTimeMillis()  + ".doc"); //导出文件

        Writer out = null;
        try {
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        try {
            t.process(dataMap, out); //将填充数据填入模板文件并输出到目标文件
            return outFile.getPath();
        } catch (TemplateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "文档生成失败";
    }

	public Configuration getConfiguration() {
		return configuration;
	}

	public void setConfiguration(Configuration configuration) {
		this.configuration = configuration;
	}

	public String getBaseDir() {
		return baseDir;
	}

	public void setBaseDir(String baseDir) {
		this.baseDir = baseDir;
	}

	public String getTemplateFile() {
		return templateFile;
	}

	public void setTemplateFile(String templateFile) {
		this.templateFile = templateFile;
	}

	public String getOutputDir() {
		return outputDir;
	}

	public void setOutputDir(String outputDir) {
		this.outputDir = outputDir;
	}
    
    
    
    

}


工具使用demo

package com.example.demo;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Snippet {
	   public static void main(String[] args) {}
	   
	   @GetMapping("/jj")
	   public void ff() {
//		   dd();
	   }
	   
	   public static void dd(String jianshedanwei,String shigongdanwei,String gongchenmingchen,String shigongdidian,String path) {

	        // 调用word文档帮助类
	        WordUtil wordUtil = new WordUtil();
	
	        // 模板文件存放的目录
	        wordUtil.setBaseDir("C:/WordFile");
	
	        // 模板文件名称
	        wordUtil.setTemplateFile("hetongxieyi.ftl");
	        
	        
	    
	
	        // word生成的输出目录
	        wordUtil.setOutputDir("文件输出路径");
	
	        // 初始化数据map
	        Map<String,Object> dataMap = new HashMap<>();
	
	        // 录入采购基本数据
	        dataMap.put("jianshedanwei", jianshedanwei);
	        dataMap.put("shigongdanwei", shigongdanwei);
	        dataMap.put("gongchenmingchen", gongchenmingchen);
	        dataMap.put("shigongdidian", shigongdidian);
	        //处理定价方式复选框
	
	        String oldPath = wordUtil.createWord(dataMap);
	
	        if (oldPath.equals("操作失败")){
	            System.out.println("操作失败");
	        }
	
	        //输出生成后的文件路径
	        System.out.println(oldPath);
	    
	   }
	
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java根据模板生成world文件 的相关文章

随机推荐

  • ctfshow 网络迷踪做题记录(1)

    ctfshow 网络迷踪做题记录 1 新手上路 找桥的名字 附件为一张海边图片 百度识图为蜈支洲岛 得到地点名 但还需要具体桥的名字 再用搜索引擎搜索关键字 就可以看到结果中的 情人桥 初学乍练 题目描述 提交这架飞机的目的地 附件图片为一
  • 十分钟让你搞懂会用Spring Retry

    一 项目的配置 为了启用 Spring Retry 的支持 首先要在pom xml 文件中添加以下依赖项
  • 良许Linux

    一个系统管理员可能会同时管理着多台服务器 这些服务器也许会放在不同的地方 要亲自一台一台的去访问来管理它们显然不是最好的方法 通过远程控制的方法应该是最有效的 Linux系统的远程管理工具大概有几种 telnet ssh vnc等 其中ss
  • motionface respeak新的aigc视频与音频对口型数字人

    在当今的数字化时代 人工智能 AI 正在逐渐渗透到我们生活的方方面面 其中 AI技术在视频制作和处理领域的应用也日益广泛 本文将探讨如何利用AI技术实现视频中人脸与音频同步对口型的方法 旨在进一步丰富视频制作的效果和表现形式 数字人一件对口
  • 由于无法验证发布者,Windows已经阻止此软件

    Windows系统都很注重系统的安全性 在提高安全性的同时 也给我们某些应用带来不便 比如在日常工作中经常会到某些网站上进行登录 需要安装该站点的ActiveX控件 否则无法正常加载 这时可能会弹出 由于无法验证发行者 所以WINDOWS已
  • matlab中由离散点生成云图,[转载]在matlab中由离散点生成云图

    首先 有离散点的数据如下 x 376 82 377 56 379 74 421 20 419 41 417 82 418 80 458 86 457 72 459 55 461 64 500 27 501 51 499 48 498 02
  • U盾的工作原理

    你的数字证书有一对 一份在U盾里的私钥 一份在银行的公钥 其实两份银行都有 U盾的原理很类似于双向认证的TLS SSL 或者其它用到RSA的双向证书验证手段 以下步骤可能和U盾实际执行的有所区别 但本质相同 银行先给你一个 冲击 它包含了随
  • No module named ‘cv2‘ 解决办法 (No module named ‘numpy‘ 等所有报错均可解决)

    更多视觉额自动驾驶项目请见 自动驾驶项目 实在不行可以私信我解决 0 常规解决方案 1 当出现No module named cv2 解决方案 pip install opencv python i https pypi tuna tsin
  • 等价类划分法设计测试用例

    等价类划分法 一 方法简介 1 定义 是把所有可能输入的数据 即程序的输入域划分策划国内若干部分 子集 然后从每一个子集中选取少数具有代表性的数据作为测试用例 方法是一种重要的 常用的黑盒测试用例设计方法 2 划分等价类 等价类是指某个输入
  • C++ 使用类成员函数的地址

    include
  • Linux基础笔记3

    操作系统基本认识 Linux 是什么 百度百科是这样定义 Linux Linux 全称GNU Linux 是一种免费使用和自由传播的类UNIX操作系统 其内核由林纳斯 本纳第克特 托瓦兹于1991年10月5日首次发布 它主要受到Minix和
  • 栈的实现(C语言版)

    大家好 这篇我们继续讲解数据结构里的栈 文章目录 栈的概念 栈的实现 栈的结构 栈的初始化 栈的销毁 栈是否为空 删除函数 取栈顶的数据 栈里数据的个数 插入函数 栈的概念 栈 一种特殊的线性表 其只允许在固定的一端进行插入和删除元素操作
  • js+canvas仿微信《弹一弹》小游戏

    前言 半年前用js和canvas仿了热血传奇网游 地址 基本功能写完之后 剩下的都是堆数据 堆时间才能完成的任务了 没什么新鲜感 因此进度极慢 这次看到微信 弹一弹 比较火 因为涉及到物理引擎 为了真实 于是动手试了一下 一共用了10个小时
  • 软工导论知识框架(二)结构化的需求分析

    本章节涉及很多重要图表的制作 如ER图 数据流图 状态转换图 数据字典的书写等 对初学者来说比较生僻 本贴只介绍基础的轮廓 后面会有单独的帖子详解各图表如何绘制 一 结构化的软件开发方法 结构化的分析 设计 实现 二 需求分析的重要性 1
  • QT5 出现一些问题的解决 办法

    版本 Qt Creator 5 4 0 mingw QT编写串口助手 1 extra qualification Widget on member ConvertHexChar fpermissive error extra qualifi
  • Mybatis使用拦截器实现数据权限

    1 自定义注解 Documented Target ElementType METHOD Retention RetentionPolicy RUNTIME public interface Permission Documented和 D
  • set_input_delay

    set input delay如何约束 3 FPGA时序约束理论篇之IO约束 数字IC剑指offer 建立时间 setup time 和保持时间 hold time 详析 建立时间和保持时间 setup time 和 hold time 数
  • 页面上下、左右滑动(selenium+python:Web自动化)

    1 上下滑动 滑动至页面底部 这个是固定写法 可以直接用 js1 window scrollTo 0 document body scrollHeight self driver execute script js1 滑动至页面顶部 这个也
  • SAS EM(六)时间序列理论

    SAS EM 六 时间序列理论 大家以前会听说过AR模型 MA模型 ARMA模型 ARIMA模型 这些到底是什么呢 今天来简易讲解一下 顺便用sas实操一下 由于本文是基于自己学习的归纳总结 若有讲得不对的地方 也希望读者指出 会及时修改
  • java根据模板生成world文件

    首先找一个world文件模板修改一下 类似如下图修改 修改完之后保存文件先保存xml文件之后修改ftl后缀名 保存成xml之后 有的时候改的有问题 需要使用文本查看器修改 手动的修改完整为 gongchenmingchen 这样的 所以需要