100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Java 导出word文档 遍历表格数据 导出图片

Java 导出word文档 遍历表格数据 导出图片

时间:2022-05-15 00:20:26

相关推荐

Java 导出word文档 遍历表格数据 导出图片

引用:/pxblog/p/13072711.html

1.引入maven依赖:

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.3.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.3.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.3.0</version></dependency><!--注意:word中要使用循环等标签必须单独导入以下依赖--><dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.1</version></dependency>

2.word模板内容

3.参数说明:$fe:jobs(jobs:java代码中集合名称),t.属性名(t表示集合中单个对象)

EasyPoi 模板 表达式支持

空格分割

三目运算 {{test ? obj:obj2}}

n: 表示 这个cell是数值类型 {{n:}}

le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}

fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}

fn: 格式化数字 {{fn:(obj;###.00)}}

fe: 遍历数据,创建row

!fe: 遍历数据不创建row

$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入

!if: 删除当前列 {{!if:(test)}}

单引号表示常量值 ‘’ 比如’1’ 那么输出的就是 1

&NULL& 控制

]] 换行符

4.工具类

package com.example.demo.utils;import cn.afterturn.easypoi.word.WordExportUtil;import org.apache.poi.xwpf.usermodel.XWPFDocument;import java.io.ByteArrayOutputStream;import java.io.File;import java.util.Map;public class WordUtil {/*** 导出word(版本docx)** @param templateWordPath* @param dataMap* @return* @throws Exception*/public static byte[] exportWord(String templateWordPath, Map<String, Object> dataMap) throws Exception {File tf = new File(templateWordPath);if (!tf.exists() || !tf.isFile()) {throw new RuntimeException("File [" + templateWordPath + "] Not Found Or Not File.");}XWPFDocument document = WordExportUtil.exportWord07(templateWordPath, dataMap);ByteArrayOutputStream bos = new ByteArrayOutputStream();document.write(bos);return bos.toByteArray();}}

5.控制层

package com.example.demo.controller;import cn.afterturn.easypoi.word.entity.WordImageEntity;import com.example.demo.utils.WordUtil;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletResponse;import java.io.OutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;@Controllerpublic class TestController {@RequestMapping(value = "/export")public void export(HttpServletResponse response){try {//Map<String, Object> dataMap = new HashMap<>(); //导出单个数据 dataMap.put("title","我是导出文档的标题");//导出对象Map<String, String> user = new HashMap<>();user.put("name", "姓名");user.put("age", "443");user.put("address", "地址");user.put("other", "我不知道");dataMap.put("user", user);//导出图片WordImageEntity image = new WordImageEntity();//设置图片尺寸image.setHeight(500);image.setWidth(500);//图片地址,需要是本地项目中图片,如果是第三方的需要把图片先下载下来image.setUrl("C:\\Users\\Fr\\Pictures\\11163144hqk4.JPG");image.setType(WordImageEntity.URL);dataMap.put("images", image);List<Map<String, Object>> jobs = new ArrayList<>();//导出列表Map<String, Object> job;for (int i = 0; i < 5; i++) {job = new HashMap<>();job.put("id", "ID-" + i);job.put("name", "姓名:" + i);jobs.add(job);}dataMap.put("jobs", jobs);// “D:/word-template-test.docx”是word模板所在位置byte[] doc = WordUtil.exportWord("D:/word-template-test.docx", dataMap);response.setContentType("application/vnd.ms-word;charset=utf-8");response.setHeader("Content-Disposition","attachment;filename=\"" + new String("word文档导出".getBytes("gb2312"), "ISO8859-1")+".docx"); //文件名中文需进行格式转换,不然可能出现乱码OutputStream out = response.getOutputStream();out.write(doc);out.flush();} catch (Exception e) {e.printStackTrace();}}}

5.导出效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。