java导出word(含图片、表格)

1.pom 引入

 <!--word报告生成依赖--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>

2.java代码示例


public class test {public static void main(String[] args) throws IOException, InvalidFormatException {log.info("Word文档开始生成!");XWPFDocument document = new XWPFDocument();WriteHomePage(document,1,"SSS"); //写首页WriteText(document); //写表格前正文与题注WriteFirstTable(document); //写第一个表格FileOutputStream out = new FileOutputStream("Report.docx");document.write(out);out.close();document.close();log.info("Word文档已成功生成!");}public static XWPFDocument WriteHomePage(XWPFDocument document, int orb, String salliteName) throws IOException, InvalidFormatException {//插入图片String imgFile = "E:\\test.png";byte[] imageBytes = Files.readAllBytes(new File(imgFile).toPath());XWPFParagraph paragraph = document.createParagraph();XWPFRun run00 = paragraph.createRun();run00.setText(" ");int width = 200; // 图片宽度int height = 140; // 图片高度int pictureType = XWPFDocument.PICTURE_TYPE_PNG;run00.addPicture(new ByteArrayInputStream(imageBytes), pictureType, imgFile, Units.toEMU(width), Units.toEMU(height));//输入标题XWPFParagraph title1 = document.createParagraph();XWPFRun run = title1.createRun();run.setText("O00");run.setUnderline(UnderlinePatterns.SINGLE);run.setFontFamily("Times New Roman");run.setFontSize(28);run.setBold(true);run.setItalic(true);//不同字体设置的参数大小不同,需要尝试title1.setIndentationFirstLine(1130);// <!-- 设置首行缩进2字符 单位是 1/20 磅 -->run.addBreak();XWPFParagraph title2 = document.createParagraph();XWPFRun run1 = title2.createRun();run1.setText(salliteName+" Continuity of Data");run1.setFontFamily("Times New Roman");run1.setFontSize(28);run1.setBold(true);title2.setIndentationFirstLine(1130); // <!-- 设置首行缩进2字符 -->//设置空白行for (int i = 0; i < 16; i++) {XWPFParagraph blank = document.createParagraph();blank.createRun().setText("");}// 创建段落并设置右对齐样式XWPFParagraph footer = document.createParagraph();footer.setAlignment(ParagraphAlignment.RIGHT);// 创建页脚并添加到段落中XWPFRun run2 = footer.createRun();run2.setText("Data Center");run2.setFontSize(18);run2.setFontFamily("Times New Roman");run2.addBreak();XWPFRun run3 = footer.createRun();run3.setText("www.xxx.com");run3.setFontSize(18);run3.setFontFamily("Times New Roman");run3.setUnderline(UnderlinePatterns.SINGLE);run3.addBreak();return document;}public static XWPFDocument WriteText(XWPFDocument document){//新建一页,创建表格XWPFParagraph newPage = document.createParagraph();newPage.setPageBreak(true);XWPFParagraph para = document.createParagraph();XWPFRun run = para.createRun();run.setText("该报告数据内容正文如下。");run.setFontFamily("宋体");run.setFontSize(12);//小四
//        XWPFFont font =  ;para.setIndentationFirstLine(500); // <!-- 设置首行缩进2字符 -->para.setSpacingBetween(1.5f);//表题注XWPFParagraph para2 = document.createParagraph();XWPFRun runPara2 = para2.createRun();runPara2.setText("表1  数据概况");runPara2.setFontFamily("宋体");runPara2.setFontSize(12);para2.setAlignment(ParagraphAlignment.CENTER);para2.setVerticalAlignment(TextAlignment.CENTER);para2.setSpacingBetween(1.5f);return document;}//输入表格public static XWPFDocument WriteFirstTable(XWPFDocument document){int row = 2;int col = 2;XWPFTable table = document.createTable(row, col);// 设置表格行高for (XWPFTableRow tableRow : table.getRows()) {tableRow.setHeight(500);}table.setStyleID("Table Grid");table.setWidth("100%");//设置表格标题String[] titleArr = {"数据类型","数据连续性"};XWPFTableRow titleRow = table.getRow(0);//设置表头内容和样式,for (int i = 0; i < col; i++) {XWPFTableCell cell = titleRow.getCell(i);cell.getCTTc().addNewTcPr().addNewVAlign().setVal(STVerticalJc.CENTER);XWPFParagraph p = cell.getParagraphs().get(0);p.setAlignment(ParagraphAlignment.CENTER);XWPFRun run3 = p.createRun();run3.setBold(true); // 设置字体加粗run3.setText(titleArr[i]);}//CTHMerge 横向合并,CTVMerge纵向合并, STMerge.RESTART 表示开始合并,为 STMerge.CONTINUE 表示继续合并
//        titleRow.getCell(4).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
//        titleRow.getCell(5).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
//        XWPFParagraph p = titleRow.getCell(4).getParagraphs().get(0);
//        p.setAlignment(ParagraphAlignment.CENTER);XWPFTableRow row1 = table.getRow(1);row1.getCell(0).setText("11");row1.getCell(1).setText("12");XWPFTableRow row2 = table.getRow(1);row2.getCell(0).setText("21");row2.getCell(1).setText("22");return document;}
}

3.效果展示
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解vtk显示的原理

文章目录 目标:知识补充:1.什么是图元?2.最让我不解的是:官方讲的是:mapper讲polydata转换为可渲染的图元数据,然后actor是将polydata映射为可渲染的图元???既然mapper就已经将其解析为图元数据,为什么actor还要进一步解析呢?3.那polydata不是也获得了一些数据,这些数据是…

【Elasticsearch】聚合查询(四)

Elasticsearch&#xff08;简称为ES&#xff09;是一个基于Lucene的开源搜索和分析引擎&#xff0c;提供了丰富的聚合查询功能。聚合查询指的是在搜索结果上执行分组、汇总和统计等操作&#xff0c;以便从大量数据中提取有用的信息和洞察。 这篇文章主要介绍检索相关的操作&…

云部署家里的服务器

1.固定静态ip 查看ip地址&#xff0c;en开头的 ifconfig查看路由器ip&#xff0c;via开头的 ip route修改配置文件 cd /etc/netplan/ #来到这个文件夹 sudo cp 01-network-manager-all.yaml 01-network-manager-all.yaml.bak #先备…

Mac电脑强大的字体管理 RightFont for Mac

RightFont for Mac软件特色 速度有多快&#xff1f;RightFont可以在0.9秒以内加载30,000个字体&#xff01; 自动从Google字体/ Adobe Typekit集合&#xff08;通过Adobe Creative Cloud客户端&#xff09;同步字体。 轻松切换组视图以折叠/展开字体系列。 通过简单的拖放导入…

华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制

华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制 1. 准备工作2. 环境搭建3. 心得总结 1. 准备工作 随着云计算时代的进一步深入&#xff0c;越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务运营和创新开发。基…

第2章 算法

2.1 开场白 2.2 数据结构与算法之间的关系 在“数据结构”课程中&#xff0c;就算谈到算法&#xff0c;也是为了帮助理解好数据结构&#xff0c;并不会详细谈及算法的方方面面。 2.3 两种算法的比较 2.4 算法的定义 算法是解决特定问题求解步骤的描述&#xff0c;在计算机…

一个人可以开发游戏吗?

在今天的数字时代&#xff0c;游戏产业已经成为全球最具活力的领域之一。从大型游戏开发工作室到独立游戏制作人&#xff0c;游戏开发已经变得更加多样化和容易进入。然而&#xff0c;对于许多梦想成为游戏开发者的人来说&#xff0c;一个关键问题一直挥之不去&#xff1a;一个…

Cortex-A9 架构

一、Cortex-A 处理器运行模式 Cortex-A9处理器有 9中处理模式&#xff0c;如下表所示&#xff1a; 九种运行模式 在上表中&#xff0c;除了User(USR)用户模式以外&#xff0c;其它8种运行模式都是特权模式&#xff0c;在特权模式下&#xff0c;程序可以访问所有的系统资源。这…

shell脚本使用(宿主机windows-服务器-centos)--用于使用shell脚本方式控制docker容器

需求: 我想要使得windows上编写shell脚本&#xff0c;并且在这个shell脚本在linux中也可用 shell脚本在windows上无法直接运行&#xff0c;但是有WSL这个linux子系统的工具 可以使得shell脚本在主机上执行 视频讲解连接 https://www.bilibili.com/video/BV1Tw411Y7FP/方式1 …

filament渲染引擎中的坐标转换

文章目录 背景openGL中的坐标转换简单的概念介绍 屏幕坐标转世界坐标openGL的实现filament通过射线拾取计算filament官方给出的转换方式filament实现坐标转换的QA1、View::pick()2、为什么filament的计算方式没有除以w分量&#xff1f;3、为什么别的资料上都是inverse(viewMatr…

idea开发Springboot出租车管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 出租车管理系统是一套完善的完整信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c; 系统具有完整的源代码和数据…

(vue3)create-vue 组合式API

优势&#xff1a; 更易维护&#xff1a;组合式api&#xff0c;更好的TS支持 之前是选项式api&#xff0c;现在是组合式&#xff0c;把同功能的api集合式管理 复用功能封装成一整个函数 更快的速度 更小的体积 更优的数据响应式&#xff1a;Proxy create-vue 新的脚手架工…

计算机竞赛 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…

外汇天眼:外汇交易一周最佳外汇交易日!

外汇市场运行24小时&#xff0c;但并非每时每刻都适合交易。本文将为您介绍一周中最佳外汇交易日&#xff0c;以及哪些时间段最适合参与外汇交易。 首先&#xff0c;值得注意的是伦敦时段通常是外汇市场最繁忙的时段。然而&#xff0c;即便如此&#xff0c;一周中仍有特定的日…

c语言 - 实现每隔1秒向文件中写入当前系统时间

实现思路 主要是通过库函数和结构体获取当前系统时间&#xff08;年月日和时分秒&#xff09;保存到变量里&#xff0c;然后通过格式化输出函数将当前系统时间输出到文件中去。 但是需要注意的是题目要求每隔 1 s对系统时间进行输出&#xff0c;所以需要加入 sleep()函数进行调…

二、浏览器--事件循环(也叫事件环,也叫event loop)--任务队列(等待执行的任务(存放的定时器,http,事件等进程))--渲染三者的关系

引用B站视频&#xff0c;搜索标题&#xff1a;【事件循环】【前端】事件原理讲解&#xff0c;超级硬核&#xff0c;忍不住转载 本视频总结&#xff1a; 超级复杂的JS底层。事件循环和事件队列的关系。宏任务、微任务和raf回调这3个事件队列的关系。任务队列和执行栈的关系。d…

配置OSPFv3基本功能 华为笔记

1.1 实验介绍 1.1.1 关于本实验 OSPF协议是为IP协议提供路由功能的路由协议。OSPFv2&#xff08;OSPF版本2&#xff09;是支持IPv4的路由协议&#xff0c;为了让OSPF协议支持IPv6&#xff0c;技术人员开发了OSPFv3&#xff08;OSPF版本3&#xff09;。 无论是OSPFv2还是OSPFv…

设计模式2、抽象工厂模式 Abstract Factory

解释说明&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定他们具体的类。 简言之&#xff0c;一个工厂可以提供创建多种相关产品的接口&#xff0c;而无需像工厂方法一样&#xff0c;为每一个产品都提供一个具体工厂 抽象工厂&#xff08;Abstra…

学校安全用电管理系统解决方案

随着科技的发展和进步&#xff0c;电力已成为我们日常生活和学习的重要支柱。然而&#xff0c;电力的使用也带来了一定的安全风险。特别是对于学校这个复杂而又活跃的环境&#xff0c;安全用电管理系统的角色显得尤为重要。 一、学校用电管理系统的现状 目前&#xff0…

win10默认浏览器改不了怎么办,解决方法详解

win10默认浏览器改不了怎么办&#xff0c;解决方法详解_蓝天网络 在使用Windows 10操作系统时&#xff0c;你可能会遇到无法更改默认浏览器的情况。这可能是因为其他程序或设置正在干扰更改。如果你也遇到了这个问题&#xff0c;不要担心&#xff0c;本文将为你提供详细的解决…