今天收到一个需求,要做一个报表的功能。

如果是图表,比如柱状图、折线图、饼图之类的,用jfreechart就可以做到了,但是有些图是纯文字的,这就需要做到将文字放到一张图片中。

搜了很多,总算找到一篇能达到效果的,这里做个记录。

参考链接:

https://www.dandelioncloud.cn/article/details/1533801141372743682

https://blog.csdn.net/u014641168/article/details/125338018

先上图:

     <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version></dependency><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.0.0</version></dependency>

实现其实也很简单

package test;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;import javax.imageio.ImageIO;import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.dom4j.DocumentException;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class Demo{// 生成Wordpublic static void createXWPFDocument(BufferedImage image)throws IOException, DocumentException, InvalidFormatException {XWPFDocument doc = new XWPFDocument();ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(image, "gif", baos);InputStream is = new ByteArrayInputStream(baos.toByteArray());XWPFParagraph paragraph = doc.createParagraph();XWPFRun run = paragraph.createRun();run.addPicture(is, XWPFDocument.PICTURE_TYPE_PNG, "图片1", 200, 140);OutputStream os = new FileOutputStream("D:\\picture\\" + UUID.randomUUID().toString().substring(28) + ".docx");// 把doc输出到输出流doc.write(os);}// 生成图片private static void createImage(String fileLocation, BufferedImage image) {try {FileOutputStream fos = new FileOutputStream(fileLocation);BufferedOutputStream bos = new BufferedOutputStream(fos);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);encoder.encode(image);bos.close();fos.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) throws Exception {int imageWidth = 330;// 图片的宽度int imageHeight = 200;// 图片的高度BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);Graphics graphics = image.getGraphics();graphics.setColor(Color.WHITE);graphics.fillRect(0, 0, imageWidth, imageHeight);graphics.setColor(Color.BLACK);int high = 50;int wigth = 20;graphics.setFont(new Font("宋体", Font.BOLD, 20));graphics.drawString("正在连接主机台数", wigth, high);high += 10;graphics.drawLine(20, high, 310, high);high += 30;graphics.setColor(Color.GRAY);graphics.setFont(new Font("宋体", Font.BOLD, 15));graphics.drawString("数据刷新于:2022-10-12 20:52:41", wigth, high);high += 30;graphics.drawString("统计", wigth, high);wigth += 50;graphics.setColor(Color.BLACK);graphics.setFont(new Font("宋体", Font.BOLD, 30));graphics.drawString("7", wigth, high);wigth += 20;graphics.setColor(Color.GRAY);graphics.setFont(new Font("宋体", Font.BOLD, 15));graphics.drawString("人", wigth, high);wigth = 20;high += 20;graphics.drawString("同比:", wigth, high);wigth += 50;graphics.setColor(Color.RED);graphics.drawString("99.99%", wigth, high);graphics.setColor(Color.GRAY);wigth = 20;high += 20;graphics.drawString("环比:", wigth, high);wigth += 50;graphics.setColor(Color.GREEN);graphics.drawString("99.99%", wigth, high);// createImage("E:\\picture\\"+UUID.randomUUID().toString().substring(25)+".jpg",// image);createXWPFDocument(image);}}

Java 生成一张带文字的图片,并写入Word文档相关推荐

  1. html文字与图片位置关系,Word文档中图片与文本的七种位置关系

    word文档可以插入图片.图片与文本的位置关系有七中情况,分别是嵌入型.四周型环绕.紧密型环绕.穿越型环绕.上下型环绕.衬于文字下方.浮于文字上方. 七种位置关系 工具:Word2013 一.嵌入型 ...

  2. Java将图片放入word文档中

    1.引入依赖包(maven项目) <!-- https://mvnrepository.com/artifact/itext/itext --><!--将照片写入word文档中的依赖 ...

  3. 怎么把图片转成word文档?会议实用小方法分享

    当您需要在Word文档中插入图片时,有时候您可能会遇到需要将图片转换为Word文档的情况.下面是一些小技巧,可以帮助您快速将图片转换为Word文档. 使用截图工具 如果您需要将电脑屏幕上的图片转换为W ...

  4. 怎么将图片转换成Word文档?手机也能轻松操作怕转

    相较于文档,图片在我们日常生活中使用的频率还是非常高的,不管使用表情包图片还是各种资料截图,可以快速更直观的查阅各种信息内容.但是如果一些图片格式的资料如果需要将内容总结到一个Word文档中,且图片通 ...

  5. 如何把图片扫描成word文档?

    在我们工作学习中,难免会遇到需要整理图片中的文字信息.而想要快速的整理出图片中的文字,就需要使用到一些工具来辅助我们,毕竟我们不可能一个个去手动输入,这会很麻烦又浪费我们的时间.那么如何把图片扫描成w ...

  6. 如何把图片转换成word文档?说一个转换途径

    我们时常需要将图片上的文字资料归纳整理下来,转成Word文档的形式会方便很多,下面给大家介绍一下如何把图片转换成word文档,有多种方式,咱们自由选择. 方式一.直接添加图片转换成Word 这种方式非 ...

  7. 怎样快速把jpg图片转换成word文档?

    在日常的生活或者是工作中我们经常见到的图片就是jpg格式的了,无论是在哪个方面,我们都会多多少少的遇到将图片转换成文字的情况发生.在高中的时候,就经常有些jpg图片需要转化的.可是一直没有找到好的转换 ...

  8. 怎么将手机图片转成Word文档?办公常备软件

    在工作中,我们经常需要使用手机拍摄照片来记录或传达信息.有时候我们需要将这些照片转化为Word文档,这就需要一些专业的工具和技巧.在这里,将介绍如何将手机图片转化为Word文档.我会提供多种方法,包括 ...

  9. java word添加图片_Java 替换word文档文字并指定位置插入图片

    先说下 需要的依赖包 org.apache.poi poi-excelant 3.12 org.apache.poi poi-scratchpad 3.12 org.apache.poi poi-oo ...

最新文章

  1. 在有@Override方法上面会报错如下
  2. 【问题收录】Eclipse Type Access restriction问题解决
  3. 张杰和机器人_张杰 - 精密运动与先进机器人技术团队 - robotics.nimte.ac.cn
  4. 【VLC-Android】LibVLC API简介(相当于VLC的MediaPlayer)
  5. html一个div浮动在另一div上,css – 在另一个DIV的顶部浮动DIV
  6. mongodb集群与分片的配置说明
  7. zemax模拟ld_Zemax光学设计实例(83)在非序列模式下LD阵列的光束整形
  8. php-frm进程管理,PHP内核探索-进程管理
  9. 结构损伤检测与智能诊断 陈长征_宿迁厂房安全检测多少钱介绍说明
  10. 配置centos7 IP以及网络问题的排查
  11. 洛谷P6140 [USACO07NOV]Best Cow Line S
  12. 庖丁解牛!深入剖析React Native下一代架构重构
  13. Spring Boot中初始化资源的几种方式
  14. 【优化算法】蝴蝶优化算法(MBO)【含Matlab源码 952期】
  15. mysql安装教程【安装版】
  16. 网络安全实验室之基础关
  17. 树莓派连接天猫精灵音箱通过蓝牙播放音乐的方法
  18. 我们公司使用了 5 年的系统限流方案 ,从实现到部署实战详解,稳的一B
  19. JS判断对象是否为空(个人常用)
  20. 如何创建自定义maven archetype?

热门文章

  1. ChatGPT热潮方兴未艾,超级车载或将成为现实
  2. 一个恶意下载器的逆向分析
  3. Java中取余(%)运算规则
  4. 由双引号与单引号引起基础知识总结
  5. 【图解】reflow和repaint
  6. 领歌敏捷协作——创建看板
  7. 如何解决后台日志显示Nacos客户端不断重复拉取配置的问题
  8. PADS VX2.8 Mark点的制作方法
  9. Dell iDrac试用许可下载
  10. 一个高人写的oracle资料[转载]