poi-tl官网

poi-tl(poi template language)是基于Apache POI的Word模板引擎。纯Java组件,跨平台,代码短小精悍,通过插件机制使其具有高度扩展性。

引入包

compile group: 'com.deepoove', name: 'poi-tl', version: '1.4.2'

定义模板

word生成代码

public class WordTest {/*** 准备数据*/@Testpublic void test() {String option = "{xAxis: {\n" +"        type: 'category',\n" +"        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n" +"    },\n" +"    yAxis: {\n" +"        type: 'value'\n" +"    },\n" +"    series: [{\n" +"        data: [820, 932, 901, 934, 1290, 1330, 1320],\n" +"        type: 'line'\n" +"    }]\n" +"}";String option2=" {\n" +"    backgroundColor: '#2c343c',\n" +"\n" +"    title: {\n" +"        text: 'Customized Pie',\n" +"        left: 'center',\n" +"        top: 20,\n" +"        textStyle: {\n" +"            color: '#ccc'\n" +"        }\n" +"    },\n" +"\n" +"    tooltip : {\n" +"        trigger: 'item',\n" +"        formatter: \"{a} <br/>{b} : {c} ({d}%)\"\n" +"    },\n" +"\n" +"    visualMap: {\n" +"        show: false,\n" +"        min: 80,\n" +"        max: 600,\n" +"        inRange: {\n" +"            colorLightness: [0, 1]\n" +"        }\n" +"    },\n" +"    series : [\n" +"        {\n" +"            name:'访问来源',\n" +"            type:'pie',\n" +"            radius : '55%',\n" +"            center: ['50%', '50%'],\n" +"            data:[\n" +"                {value:335, name:'直接访问'},\n" +"                {value:310, name:'邮件营销'},\n" +"                {value:274, name:'联盟广告'},\n" +"                {value:235, name:'视频广告'},\n" +"                {value:400, name:'搜索引擎'}\n" +"            ].sort(function (a, b) { return a.value - b.value; }),\n" +"            roseType: 'radius',\n" +"            label: {\n" +"                normal: {\n" +"                    textStyle: {\n" +"                        color: 'rgba(255, 255, 255, 0.3)'\n" +"                    }\n" +"                }\n" +"            },\n" +"            labelLine: {\n" +"                normal: {\n" +"                    lineStyle: {\n" +"                        color: 'rgba(255, 255, 255, 0.3)'\n" +"                    },\n" +"                    smooth: 0.2,\n" +"                    length: 10,\n" +"                    length2: 20\n" +"                }\n" +"            },\n" +"            itemStyle: {\n" +"                normal: {\n" +"                    color: '#c23531',\n" +"                    shadowBlur: 200,\n" +"                    shadowColor: 'rgba(0, 0, 0, 0.5)'\n" +"                }\n" +"            },\n" +"\n" +"            animationType: 'scale',\n" +"            animationEasing: 'elasticOut',\n" +"            animationDelay: function (idx) {\n" +"                return Math.random() * 200;\n" +"            }\n" +"        }\n" +"    ]\n" +"}";String txt = "这是一段文字";String testImg2 = "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3601643726,2993647989&fm=26&gp=0.jpg";getWord(option, option2, txt, testImg2);}/*** 生成word* @param option   echartsoption* @param option2  echartsoption* @param txt     文字* @param testImg2  网络图片地址*/public static void getWord(String option, String option2, String txt, String testImg2) {try {//获取echarts图片流List<byte[]> listByte = getImgByte(option, option2);//获取模板Resource resource = new ClassPathResource("template/test.docx");Map map = new HashMap();map.put("txt", txt);map.put("testimg", new PictureRenderData(500, 300, ".png", listByte.get(0)));map.put("testimg2", new PictureRenderData(500, 300, ".png", BytePictureUtils.getUrlByteArray(testImg2)));map.put("testimg3", new PictureRenderData(500, 300, ".png", listByte.get(1)));XWPFTemplate template = XWPFTemplate.compile(resource.getFile()).render(map);downloadLocalhost(template);return;} catch (IOException e) {e.printStackTrace();}}/*** 获取多个图片流** @return*/public static List<byte[]> getImgByte(String option, String option2) {String options[] = {option, option2};List<byte[]> listByte = WebDriverUtil.getImgByte(options);return listByte;}/*** 网络流下载** @param template* @param response*/public static void downloadServlet(XWPFTemplate template, HttpServletResponse response) {try {response.setHeader("Content-disposition", "attachment;filename=" + new String("简报".getBytes("gb2312"), "ISO8859-1") + ".docx");response.setCharacterEncoding("utf-8");response.setContentType("application/octet-stream");response.setContentType("multipart/form-data;charset=UTF-8");ServletOutputStream out = response.getOutputStream();template.write(out);out.flush();template.close();out.close();} catch (IOException e) {e.printStackTrace();}}/*** 下载至本地** @param template*/public static File downloadLocalhost(XWPFTemplate template) {try {File file = new File("D:/简报.docx");FileOutputStream out = new FileOutputStream(file);template.write(out);out.flush();out.close();template.close();return file;} catch (IOException e) {e.printStackTrace();}return null;}
}

效果



获取echarts图片流

Java 使用poi-tl下载Word相关推荐

  1. java用poi实现对word读取和修改操作

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  2. Java:POI方式实现Word转html/htm

    2019独角兽企业重金招聘Python工程师标准>>> 这里就不对POI做过多的说明了,贴个官网 https://poi.apache.org/,随意看看. 首先搞清楚下要将doc/ ...

  3. Java使用POI实现导出Word文档

    POI官网链接:http://deepoove.com/poi-tl/(方便各位博友后期深入学习) 1.首先导入POM依赖包 <dependency><groupId>com. ...

  4. Java使用Poi实现导出Word段落以及表格,XWPFParagraph和XWPFRun详解,生成目录,生成折线图、柱状图、饼状图

    导出段落 public void exportSummarizeWord(HttpServletResponse response, Integer id) {Summarize summarize ...

  5. java利用poi模板导出word文件

    注意:  doc文件的读取,需要导入poi-scratchpad包: docx文件读取,需要导入poi-ooxml包: 一.引入pom <dependency><groupId> ...

  6. Java 使用poi自定义下载Excel模板

    poi自定义Excel模板 设置下拉框以及悬浮提示信息 首先导入maven依赖 <dependency><groupId>org.apache.poi</groupId& ...

  7. java poi 上传与下载word文件

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  8. java word上传下载_java poi 上传与下载word文件

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  9. java poi读取word中附件_java用poi实现对word读取和修改操作

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  10. java poi_Java POI的学习(一)——Word

    前言 (1)POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NP ...

最新文章

  1. 深度学习的时代将结束:25 年 16625 篇论文佐证
  2. Leetcode:Search Insert Position
  3. 23设计模式简介笔记
  4. MAC解决连接服务器,一段时间不操作导致断开连接,卡顿一段时间的问题。
  5. TypeError系列之:TypeError: only size-1 arrays can be converted to Python scalars
  6. linux安装java的脚本吗,Linux安装JDK脚本
  7. 【视频点播最佳实践】使用OSS SDK上传视频到点播
  8. React Native 交互管理器InteractionManager
  9. 强化学习推荐系统_推荐人系统:价值调整,强化学习和道德规范
  10. SnagIt - 官方网站
  11. Java Wbe 学习心得 day06
  12. 为什么是“深度”学习而不是宽度?
  13. pix4d计算机配置速度,实测大疆智图(DJI Terra)与Pix4D,Smart3D正射三维成果对比...
  14. 憎恨之心最强套装攻略_憎恨之心装备选择 | 手游网游页游攻略大全
  15. 微信将可开小号!微信内测一个手机可注册俩号
  16. 40年开店近4万家,麦当劳老大地位恐不保!看看人家这心机!
  17. vscode源代码管理不显示修改的文件夹
  18. 微信小程序收起键盘(微信小程序关闭键盘)
  19. 地形湿度指数(TWI)获取教程
  20. mesothelioma-弥漫性间皮瘤

热门文章

  1. 计蒜客习题:恋爱纪念日(C语言)
  2. 分子遗传学重点(可缩印)
  3. matlab怎么对不同长度的数据储存,求助,怎么解决适量长度不同的问题
  4. 学生成绩录入系统与查询
  5. 番茄钟怎么调_番茄钟的使用方法与使用体会
  6. mac下如何使用ssh-copy-id完成ssh的公钥认证登录
  7. 【JavaSE】Java9Java10Java11新特性(687~717)
  8. MMdetection绘制mAP-自用
  9. 2021年最全的自动化测试面试题及答案--看完后吊打面试官!自动化测试是什么?自动化测试学什么?
  10. 索引算法原理解析(B-tree以及磁盘存储原理)