public static void main(String[] args) {

//模板、文件、图片路径

String workPath=System.getProperty("user.dir") + "/static-utils/src/main/resources/word/";

String templateName="test.docx";

Map datas = new HashMap() {

{

//文本

put("name","xiaoguo");

put("sex","男");

put("year","20200105");

put("hello","xiaoguo写于2020年一月");

//自定义表格

RowRenderData header = RowRenderData.build(new TextRenderData("1C86EE", "姓名"), new TextRenderData("1C86EE", "学历"));

RowRenderData row0 = RowRenderData.build("张三", "研究生");

RowRenderData row1 = RowRenderData.build("李四", "博士");

RowRenderData row2 = RowRenderData.build("王五", "博士后");

put("tables", new MiniTableRenderData(header, Arrays.asList(row0, row1, row2)));

//自定义有序列表

put("testText", new NumbericRenderData(NumbericRenderData.FMT_DECIMAL, new ArrayList() {

{

add(new TextRenderData("Plug-in grammar"));

add(new TextRenderData("Supports word text, header..."));

add(new TextRenderData("Not just templates, but also style templates"));

}

}));

//网落图片

put("picture", new PictureRenderData(200, 150, ".jpg", BytePictureUtils.getUrlBufferedImage("https://gss3.bdstatic.com/7Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike116%2C5%2C5%2C116%2C38/sign=61c551093f6d55fbd1cb7e740c4b242f/d8f9d72a6059252d937820d3369b033b5ab5b9fd.jpg")));

//本地图片

put("picture2", new PictureRenderData(200, 150, ".jpg", BytePictureUtils.getLocalByteArray(new File(workPath + "c1.jpg"))));

}

};

generateWord(datas, workPath + templateName, workPath);

}

/**

* 通过word模板并生成word文档

*

* @param paramData    参数数据

* @param templatePath word模板地址加模板文件名字

* @param outFilePath  输出文件地址(不带文件名字)

* @return 生成的word文件

*/

public static File generateWord(Map paramData, String templatePath, String outFilePath) {

String outFileName = "word_" + System.currentTimeMillis() + "_" + random.nextInt(100) + ".doc";

return generateWord(paramData, templatePath, outFilePath, outFileName);

}

/**

* 通过word模板并生成word文档

*

* @param paramData    参数数据

* @param templatePath word模板地址加模板文件名字

* @param outFilePath  输出文件地址(不带文件名字)

* @param outFileName  输出文件名字

* @return 生成的word文件

*/

public static File generateWord(Map paramData, String templatePath, String outFilePath, String outFileName) {

//判断输出文件路径和文件名是否含有指定后缀

outFilePath = CommonUtil.addIfNoSuffix(outFilePath, "/", "\\");

outFileName = CommonUtil.addIfNoSuffix(outFileName, ".doc", ".docx");

//解析word模板

XWPFTemplate template = XWPFTemplate.compile(templatePath).render(paramData);

//输出文件

FileOutputStream out = null;

File outFile = new File(outFilePath + outFileName);

try {

out = new FileOutputStream(outFile);

template.write(out);

out.flush();

} catch (IOException e) {

log.error("生成word写入文件失败", e);

} finally {

if (template != null) {

try {

template.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (out != null) {

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return outFile;

}

java word 模板_java通过word模板生成word文档相关推荐

  1. java生成word文档_Java多种方式动态生成doc文档

    本来是要在Android端生成doc的(这需求...),最后方法没有好的方法能够在Android上做到完美,最后还是只能搬迁到服务器.不浪费,还是记录下各框架不支持Android的原因以及他们的特点. ...

  2. java openoffice 打印_java调用openoffice将office系列文档转换为PDF的示例方法

    前导: 发过程中经常会使用java将office系列文档转换为PDF, 一般都使用微软提供的openoffice+jodconverter 实现转换文档. openoffice既有windows版本也 ...

  3. java改写模式_Java基于状态模式实现的文档编辑模式切换功能实例

    本文实例讲述了Java基于状态模式实现的文档编辑模式切换功能.分享给大家供大家参考,具体如下: 一 模式定义 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类. 二 ...

  4. java xml 查询_Java DOM解析器 - 查询XML文档

    演示示例 这是需要我们查询的输入XML文件: Ferarri 101 Ferarri 201 Ferarri 301 Lamborgini 001 Lamborgini 002 Lamborgini ...

  5. XML——生成 XML 文档(读入 XML的反向过程)

    [0]README 0.1) 本文文字描述转自 core java volume 2 , 旨在理解 XML--生成 XML 文档(读入 XML的反向过程) 的基础知识 : 0.2) for sourc ...

  6. 根据文件模板实现预览、生成word、pdf、excel(后端-项目)

    背景 页面上有一份表单,包含基本信息和列表信息,用户填写完信息后,点击预览/导出,可以预览/导出word.pdf.excel文档. 因为代码重构过,所以看流程可能会有点绕,为方便能看懂,这里直接提供了 ...

  7. Java生成PDF文档 iText使用PDF模板一

    最近在弄这个java生成pdf,哎,在网上查找了各种各样的学习资料,弄了几天,今天终于把这个效果简单的弄出来,所以,也把这个,我所走过的坑,作一个记录,提供接下来需要学习的人. 参考文献文档:http ...

  8. Springboot通过模板生成pdf文档带图片

    Springboot通过模板生成pdf文档带图片 环境:springboot2.3.10.RELEASE + itextpdf5.5.13.2 依赖 <dependency><gro ...

  9. java pdf 首行缩进_java使用iText生成pdf文档的对齐方式

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  10. 生成doc文档目录,aspose word技术实现

    生成doc文档目录,比较了Spire.Doc和aspose word两个技术,Spire.Doc生成目录过多的话会出现问题,使用aspose word解决此问题. //输出到文件 String dir ...

最新文章

  1. xshell筛选出字符串中的数字,计算网络流量
  2. C#接收串口RS232的CD、CTS、DSR信号
  3. 用c语言编程实现strcpy,用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
  4. 威宝推出支持四接口的桌面硬盘新品
  5. python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解
  6. 小度拆卸_拆卸invokedynamic
  7. python selenium ---键盘事件
  8. springcloud 服务网关Zuul实战(一)基本路由配置
  9. AtCoder Grand Contest 018 A
  10. mysql多表结果合并查询
  11. VB/VBA的浮点数结构
  12. wpdec函数_小波包分解常用函数
  13. Silverlight 4 Tools中文版下载
  14. C语言中数组和字符串长度以及输入输出详解
  15. 163邮箱邮件被退回,什么企业邮箱可以接收国外邮件?
  16. 如何使用Reviewboard进行代码Review?
  17. 容易的面试问题变得更加困难:给定数字1..100,在正好缺少k的情况下,找到缺失的数字
  18. C++阶段03笔记03【文件操作(文本文件读写、二进制文件读写)】
  19. C++基础面试问题总结
  20. Chakra-UI 学习笔记

热门文章

  1. 看linux后台台账,linux怎么查询台账信息
  2. WARNING: Published ports are discarded when using host network mode 解决方法
  3. SQL2000有文件挂起问题
  4. java 航班_Java实现简单航班查询系统-Go语言中文社区
  5. C++中set容器的基本使用----在B站听黑马程序员c++课程的记录
  6. python就业需要的技能_教你如何快速掌握Python就业技能
  7. 实验七 Android Studio Intent相机图库读取照片【班级名单列表视图03】
  8. 让五个数都不相等的程序c语言,C语言程序设计课件第05讲.ppt
  9. 强烈建议使用Windows Live Writer发布日志
  10. CSS(二)文字样式