业务场景

公司要在线上和客户合作,签订合同。客户只需要提供信息,系统要将客户信息填写进合同模板文件中然后导出给客户

 

技术选型

apache的POI非常适合用于Excel的操作,虽然也支持了word文件,但是支持得很差,

所以常见的有jacob的方式,这是最好的方式,但是jacob依赖window下的dll文件,在Linux系统上不支持。

所以只有使用freemarker的方式

思路就是:

1)把你的模板文件另存为xml文件

2)把你要写数据的地方标记上${xxx}

3) 再把xml转回word文件

 

实现

java写数据到word文件

 

java写数据到word文件

 

将此xml文件放到你的工程中

java写数据到word文件

在对应需要填写数据的地方写上${变量名}表达式

public static void main(String[] args) throws IOException, TemplateException {
    
    Configuration configuration = new Configuration();
    configuration.setDefaultEncoding("utf-8");

    //把数据放进这个map里面进行填充
    Map dataMap = new HashMap();
    dataMap.put("publisher","李正杭2");
    dataMap.put("jia","柳岩2");
    dataMap.put("yi","郭德纲2");
    dataMap.put("iCard","513427199006260213");
    dataMap.put("address","宁南县裤裆街2");

    configuration.setClassForTemplateLoading(Client.class, "/template");
    Template template = null;

    //加载---要装载的模板文件
    template = configuration.getTemplate("聘请艺人协议书.xml");
    //输出文档路径及名称,注意后缀一定要.doc!不然代码运行完后会打不开
    String path = Client.class.getClassLoader().getResource("template").getPath();
    path = path + "/聘请艺人协议书.doc";
    File outFile = new File(path);
    Writer out = null;
    out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
    template.process(dataMap, out);


}

运行就可以了。

但是据说freemarker生成的doc文档是假的doc文档  在手机端打不开。

可以去试试,反正我们的需求只是在PC上操作就行了。

 

 

 

 

 

 

 

相关文章:

  • 2022-01-05
  • 2022-02-12
  • 2021-05-22
  • 2022-12-23
  • 2021-12-14
  • 2021-08-18
  • 2021-11-27
  • 2021-12-10
猜你喜欢
  • 2021-11-21
  • 2022-12-23
  • 2021-08-01
  • 2021-12-04
  • 2022-02-13
  • 2022-12-23
  • 2021-11-18
相关资源
相似解决方案