java poi word导出

(含有文字,图像)
导出word效果如下:
思路:建立预期导出word效果,设置为模板,然后填充对应信息,注意,加粗,居中等一些图片,文字格式预先设置好。然后进行文字或者图片填充即可;
1.将word文件另存为xml格式;
2.将文件后缀xml文件打开,修改模板对应填充信息如图下,然后修改后缀名为.ftl
以上模板准备完毕。
3.代码:
入口

@PostMapping(value = "/exportDIY")@ResponseBody@ApiOperation("多格式导出文件")@ControllerLog(description = "多格式导出文件", logLevel = 1)public ResponseResult exportDIY(HttpServletResponse response, @RequestBody Map<String, String> request) {return logService.exportDIY(response, request);}

主题代码:

 try {Map<String, Object> datas = new HashMap<String, Object>() {{put("title", "xxxxxxx统计");put("time", getTimeMsg(request));//java图片/base64等格式图片put("image1", URLDecoder.decode(request.get("image1").substring(22), "UTF-8").replaceAll(" ", "+"));put("image2", URLDecoder.decode(request.get("image2").substring(22), "UTF-8").replaceAll(" ", "+"));}};WordUtils wordUtils = new WordUtils();wordUtils.exportMillCertificateWord(response, datas, fileName, "logView.ftl");} catch (IOException e) {e.printStackTrace();}

工具类:

public class WordUtils {private static Configuration configuration = null;public WordUtils() {configuration = new Configuration();configuration.setDefaultEncoding("utf-8");configuration.setClassForTemplateLoading(WordUtils.class, "/templates");// 设置异常处理器,这样的话就可以${a.b.c.d}即使没有属性也不会出错configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);}public void exportMillCertificateWord(HttpServletResponse response, Map map, String title, String ftlFile)throws IOException {Template freemarkerTemplate = configuration.getTemplate(ftlFile);File file = null;InputStream fin = null;ServletOutputStream out = null;try {// 调用工具类的createDoc方法生成Word文档file = createDoc(map, freemarkerTemplate);fin = new FileInputStream(file);response.setCharacterEncoding("utf-8");response.setContentType("application/msword");// 设置浏览器以下载的方式处理该文件名String fileName = title + ".doc";response.setHeader("Content-Disposition","attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));out = response.getOutputStream();byte[] buffer = new byte[512]; // 缓冲区int bytesToRead = -1;// 通过循环将读入的Word文件的内容输出到浏览器中while ((bytesToRead = fin.read(buffer)) != -1) {out.write(buffer, 0, bytesToRead);}} finally {if (fin != null)fin.close();if (out != null)out.close();if (file != null && file.exists())file.delete(); // 删除临时文件}}public static File createDoc(Map<?, ?> dataMap, Template template) {String name = "logView.docx";File f = new File(name);Template t = template;try {// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开Writer w = new OutputStreamWriter(new FileOutputStream(f), "utf-8");t.process(dataMap, w);w.flush();w.close();} catch (Exception ex) {ex.printStackTrace();throw new RuntimeException(ex);}return f;}}

依赖

   <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>

依赖不足,自己网上巴拉一哈就妥;
postman自测妥当(图片按照流传入,post请求)
以上!

java poi word导出相关推荐

  1. java poi pdf 导出

    java poi pdf 导出 (java poi pdf导出 文字+图片两张放置一行) 思路:流传入图片 ,pdf没有行的概念,只有列即为一行,两张图片可以先建立一列在一列总再建立两列各放置一张图片 ...

  2. Java Poi word 插入图片并添加边框

    Java Poi word 插入图片并添加边框 //得到Picture的Base64编码 Base64Picture p1; //打开Word文件 Resource resource = new Cl ...

  3. java实现word导出(带图片)

    java实现word导出(带图片) 转载地址:https://www.jianshu.com/p/98ed03044fe1

  4. JAVA POI Word转PDF convert方法 NullPointException

    JAVA POI Word转PDF convert方法 NullPointException 如果操作过通过POI操作过Word,请保证创建run之后run的值不为null,为null将在转换时报错. ...

  5. Java poi word模板填充数据、复制行删除行

    Java poi word模板填充数据 1.明细表格式 ${list_xxxxx} 普通格式 ${xxxxxx} 2.replaceInTable方法中 table.removeRow(2); 第三行 ...

  6. java poi 动态导出word表格带合并效果

    1.引入word导出所需依赖包 工作常用的excel,word导出,需要引入下面的6个主要包,和主要包依赖的其他包 ,可以看下面的表格进行依赖下载引入 这下面的两张图是主要包对应涉及到功能,可以按需要 ...

  7. Java POI导入/导出(规则/非规则)excel

    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

  8. java - poi递归导出树结构Excel,导入树结构Excel,树结构递归查询,新增,修改,删除

    工作中设计树结构增删改查,导入,导出操作,搜索 POI导入导出树结构Excle 相关博客较少,故写博客用以记录分享. 文章目录 一.表结构设计,导入导出模板. 二.递归查询树结构 1.思路如下 2.代 ...

  9. Java操作word导出、多个word合并

    导入maven <!--word导出--><dependency><groupId>com.deepoove</groupId><artifact ...

最新文章

  1. Python Data Structures
  2. VC四种程序启动画面的制作方法
  3. 跨站访问如何保证session的正常使用
  4. 分析模式:可复用的对象模型学习笔记
  5. mysql系统变量_MySQL 系统变量(system variables)
  6. 社工库365开网站公开售卖盗取的账号信息
  7. 2410 中断过程处理分析
  8. 动态加载laydate 失效_Java对象的内存布局+反射的原理+动态代理+ 并发和锁+文末彩蛋...
  9. SDNU 1507.E.The Binding of Isaac
  10. 本周Web2.0小工具推荐[2008-09-13]
  11. 固态和机械硬盘组raid_联想G400拆机步骤(固态硬盘替换机械硬盘,机械硬盘替换光驱)...
  12. Kotlin入门(28)Application单例化
  13. Karoly Nyisztor
  14. 工具推荐:2016年最佳的15款Android黑客工具
  15. 《羊了个羊》创始人被母校制成展牌......
  16. arcgis拓扑检查和修改
  17. mysql 支持嵌套查询吗_【转】MySql 嵌套查询
  18. 常见高清视频“扩展名”、视频标准
  19. Linux下设置MTU值到9000
  20. 电脑删除快捷键还有哪些?学会了让工作效率更提升

热门文章

  1. 修改ro.debuggable用于调试安卓应用
  2. 500 Casual Expressions Commonly Used
  3. 7-1 时间换算 (10分)
  4. Python用格雷戈里公式求pi的近似值
  5. CSP-JS信息学奥赛注意事项
  6. GameFramework制作游戏(一)
  7. java hs err pid_JVM致命错误日志(hs_err_pid.log)分析
  8. linux通过定时任务定时关闭和重启java程序
  9. guzzlehttp/guzzle 包设置超时
  10. python制作软件封面_如何使用python生成杂志封面?