使用ruoyi-前后端分离版本,根据word模板导出,包含表格和图片。

一、创建模板

列表使用{{}},文本使用[]

二、引入依赖

       <!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency> <!-- Word工具 -->
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.10.0</version>
</dependency>

  三、调用接口

 @PostMapping("/exportPic")
public void exportPic(HttpServletResponse response, InfoGroup infoGroup)
{
//从数据库中获取数据,组成list
groupService.exportPic(response,list);
}

  四、WordUtil导出类

package com.ruoyi.common.utils.poi;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.deepoove.poi.policy.PictureRenderPolicy;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
import java.util.List; import com.ruoyi.common.core.domain.AjaxResult;
import org.apache.poi.util.Units;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse; import static com.deepoove.poi.data.PictureType.PNG;
import static com.ruoyi.common.config.RuoYiConfig.getProfile; /**
* Word导出方法
*/
public class WordUtil {
private static final Logger log = LoggerFactory.getLogger(WordUtil.class);
/**
* 导出信息图片
* @param data 导出模板数据
* @param response
* @return
* @throws Exception
*/
public AjaxResult exportPic(HttpServletResponse response,List<Map<String, Object>> data) throws Exception {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8"); Map<String, Object> datas = new HashMap<>();//传入word数据
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
List<String> pictureTag = new ArrayList<>();//图片处理
for (int i = 0; i < data.size(); i++) {
Map<String, Object> detailMap = new HashMap<String, Object>();//将word中标签名的例和对应数据保存到map
detailMap.put("name", data.get(i).get("name"));
//添加图片
BufferedImage image = ImageIO.read(new File(picPath));
detailMap.put("photo", new PictureRenderData(100, 100, PNG, image));
pictureTag.add("photo");//用于设置图片
}
list.add(detailMap);//将设置好的行保存到list集合中
}
//图片配置
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
Configure config = Configure.builder().bind("lists", policy).build();//设置列表配置,如果有多个列表时需加.bind("list1", policy) 新列表配置即可
for (String tag : pictureTag
) {
config.customPolicy(tag, new PictureRenderPolicy());//设置图片,不然保存的是一串字符
}
datas.put("lists", list); //将列表保存到渲染的map中
//3.创建XWPFTemplate对象,并设置读取模板路径和要渲染的数据
String inputFile = getProfile() + "\\template\\pic.docx";
XWPFTemplate template = XWPFTemplate.compile(inputFile, config).render(datas);
//compile(模板路径,对应的配置)方法是设置模板路径和模板配置的,如果不设置配置时可不传config
//render(datas)方法是用来渲染数据,将准备好的map数据方进去渲染
//4.模板的输出,用FileOutputStream输出流(可以输出到指定文件位置,也可以用ajax直接返回给浏览器下载)
//FileOutputStream out = null;//创建文件输出流并指定位置
try {
//out = new FileOutputStream(getProfile() + "\\download\\picOut.docx");
//template.write(out);
//out.flush();
//out.close();
template.write(response.getOutputStream());
template.close();
return AjaxResult.success("成功");
} catch (FileNotFoundException e) {
e.printStackTrace();
return AjaxResult.error(e.getMessage());
} catch (IOException e) {
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
}
}

  五、导出页面调用,使用现成的导出方法

this.download('test/exportPic', {
...this.queryParams
}, `test.docx`)

  

springboot 集成poi导出word(一)的更多相关文章

  1. SpringBoot 集成 FreeMarker 导出 Word 模板文件(底部附源码)

    思路解说 word 模板文件(doc 或 docx 文件)另存为 xml 文件 将后缀 xml 改成 html:大部分文档会改成 ftl(FreeMarker 的后缀名),因为 word 文件另存为 ...

  2. SpringBoot集成文件 - 如何使用POI导出Word文档?

    前文我们介绍了通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.所以 ...

  3. poi导出word

    最近做了个poi导出word的功能 下面是代码: 一个可以参考的例子: package com.lzb.crm.web; import java.io.FileOutputStream; import ...

  4. java工具类POI导出word

    1.新建一个word,里面填写内容,如: 2.导出wordjava类 /** * POI导出word测试 * @throws Exception */ @RequestMapping(value=&q ...

  5. poi导出word表格详解 超详细了

    转:非常感谢原作者 poi导出word表格详解 2018年07月20日 10:41:33 Z丶royAl 阅读数:36138   一.效果如下 二.js代码 function export_word( ...

  6. poi导出word时设置兼容性

    接上一篇poi导出word http://www.cnblogs.com/xiufengd/p/4708680.html. public static void setAuto(XWPFDocumen ...

  7. 使用POI导出Word(含表格)的实现方式及操作Word的工具类

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  8. Spring MVC中使用POI导出Word

    内容绝大部分来源于网络 准备工作 准备[XwpfTUtil]工具类(来源于网络) 准备word模版 下载[XwpfTUtil]工具类 import org.apache.poi.xwpf.usermo ...

  9. POI导出Word插入复选框

    POI功能比较强大,但是有些不常用功能比如插入特殊符号,不知道API怎么调用 Word里要插入复选框,首先想到的是POI有没有提供现成的API,搜了一番,貌似都说不直接支持 http://stacko ...

  10. poi导出word模板项目实例(一个文件)

    在页面上填写值,然后导出到word模板中,并把页面上的值带到模板中,也就是导出word文档,提前有word 的模板形式, 1.jsp 页面   <table class="formTa ...

随机推荐

  1. C#/.net程序调用python

    C#/.net程序调用python C#的优势在于window下的开发,不仅功能强大而且开发周期短.而python则有众多的第三方库,可以避免自己造轮子,利用C#来做界面,而具体实现使用python来 ...

  2. 【Java-01-2】java基础-基本语法(2)(关系运算,if,循环)

    1.关系/逻辑/条件 运算符,if语句 /* * 关系运算,if,循环 * 条件:condition * 注意逻辑运算符的短路特性 */ import java.io.*; public class ...

  3. 【C++复习】第六章 数组、指针、字符串

    1.数组 1.1 基本数组 数组声明int a[10]; 声明时方括号内是元素个数.下标从0开始. 第一个元素是a[0],最后一个元素是a[9] a[n]表示的是第n+1个元素 二维数组int b[3 ...

  4. mybatis动态标签——where、if

    mapper接口 public interface EmpMapper { List<Emp> getEmp(Emp emp); } mapper.xml <?xml version ...

  5. 面向对象程序设计第二次blog

    一.前言 第四次题目集总结-- 题量:较多 难度:较高 知识点: 获取输入字符串的特定字符类型 获取并储存.计算 循环.选择.字符串.数组的使用 继承 类的设计 总结:题目比较难,题量较少,需要用到正 ...

  6. SAP 开具发票的抬头文本带到会计凭证上

    #需求 将开具发票的抬头文本带到会计凭证上.方便财务处理凭证,不然需要再去编辑凭证,容易遗忘. 达到的效果如图所示: #二代增强SDVFX001 事务码cmod分配增强 编写增强出口 代码如下: DA ...

  7. docker容器SSH服务自启动

    使用ubuntu容器,会在容器内安装ssh服务,但是会发现当容器重启后,如何实现ssh服务自动重启呢?可以使用Dockerfile参看此处 ,本文介绍一种在docker容器中进行配置的方法 安装ssh ...

  8. Mac Parallels Desktop篇 安装Windows 10

    Parallels Desktop安装Windows 10系统: 1.首先下载并安装Parallels Desktop ,下载 Windows 10 系统镜像 2.打开Parallels Deskto ...

  9. Pytorch实战学习(二):用Pytorch实现逻辑回归

    <PyTorch深度学习实践>完结合集_哔哩哔哩_bilibili 用Pytorch实现逻辑回归 Logistic Regression 从线性回归 →​ 逻辑回归 1.分类问题 计算属于 ...

  10. 性能测试-dstat以及sar(网络相关数据查看)

    1.dstat参数说明 # 安装 yum install dstat -y dstat命令不加任何参数时,会收集CPU.磁盘.网络.分页.系统的数据信息,每秒收集一次.缺省参数时相当于dstat -c ...