Java使用poi生成word文档的简单实例

Java使用poi生成word文档的简单实例

生成的效果如下:
在这里插入图片描述

用到的poi的简单的知识

新建一个word对象

//新建文件
XWPFDocument document = new XWPFDocument();

新建段落以及文字样式

//创建段落
XWPFParagraph paragraph = document.createParagraph();
paragraph.setAlignment(ParagraphAlignment.CENTER);//创建标题
XWPFRun titleFun = paragraph.createRun();
titleFun.setText("个人信息表");
titleFun.setBold(true);
titleFun.setFontSize(25);
titleFun.setColor("000000");
titleFun.setFontFamily("宋体");
titleFun.addBreak();

titleFun.addBreak(); 换行

实例-生成一个简单word文档

新建一个maven项目

pom.xml 导入5.2.5的poi的依赖包

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

新建SimpleWord.java文件

文件内容如下:

package com.wumeng.wordexport;import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;/*** @author wumeng 2024/6/27 17:56*/
public class SimpleWord {/*** 新建word* @throws IOException*/static void newWord(String outputPath) throws IOException {//新建文件XWPFDocument document = new XWPFDocument();//创建段落XWPFParagraph paragraph = document.createParagraph();paragraph.setAlignment(ParagraphAlignment.CENTER);//创建标题XWPFRun titleFun = paragraph.createRun();titleFun.setText("个人信息表");titleFun.setBold(true);titleFun.setFontSize(25);titleFun.setColor("000000");titleFun.setFontFamily("宋体");titleFun.addBreak();//添加引言XWPFParagraph paragraph2 = document.createParagraph();paragraph2.setAlignment(ParagraphAlignment.CENTER);XWPFRun titleFun2 = paragraph2.createRun();titleFun2.setText("引言");titleFun2.setBold(true);titleFun2.setFontSize(20);titleFun2.setColor("000000");titleFun2.setFontFamily("宋体");titleFun2.addBreak();//添加第一段内容XWPFParagraph paragraph3 = document.createParagraph();paragraph3.setAlignment(ParagraphAlignment.LEFT);XWPFRun titleFun3 = paragraph3.createRun();titleFun3.setText("个人信息表");titleFun3.setBold(true);titleFun3.setFontSize(14);titleFun3.setColor("000000");titleFun3.setFontFamily("宋体");XWPFRun titleFun4 = paragraph3.createRun();titleFun4.setText(",(注:以下内容请根据个人情况如实填写)");titleFun4.setFontSize(14);titleFun4.setColor("000000");titleFun4.setFontFamily("宋体");titleFun4.addBreak();//创建表格XWPFTable table = document.createTable(1,3);SimpleWordUtil.setTableWidthAndHAlign(table, "9072",STJcTable.Enum.forString("center"));List<String> headers = new ArrayList<String>();headers.add("姓名");headers.add("性别");headers.add("年龄");for (int i = 0; i < headers.size(); i++) {XWPFTableCell cell = table.getRow(0).getCell(i);XWPFParagraph cellParagraph = cell.getParagraphArray(0);cellParagraph.setAlignment(ParagraphAlignment.CENTER);XWPFRun cellParagraphRun = cellParagraph.createRun();cellParagraphRun.setFontSize(12);cellParagraphRun.setFontFamily("宋体");cellParagraphRun.setText(headers.get(i));cellParagraphRun.setBold(true);}List<List<String>> lists = new ArrayList<List<String>>();List<String> list1 = new ArrayList<String>();list1.add("黄xx");list1.add("男");list1.add("18");lists.add(list1);List<String> list2 = new ArrayList<String>();list2.add("王xx");list2.add("女");list2.add("16");lists.add(list2);for (int i = 0; i < lists.size(); i++) {table.createRow();for (int j = 0; j < lists.get(i).size(); j++) {XWPFTableCell cell = table.getRow(i+1).getCell(j);XWPFParagraph cellParagraph = cell.getParagraphArray(0);cellParagraph.setAlignment(ParagraphAlignment.CENTER);XWPFRun cellParagraphRun = cellParagraph.createRun();cellParagraphRun.setFontSize(12);cellParagraphRun.setFontFamily("宋体");cellParagraphRun.setText(lists.get(i).get(j));}}//保存文档SimpleWordUtil.saveDocument(document, outputPath);}public static void main(String[] args) throws Exception {newWord("./14.docx");}}

相关工具类SimpleWordUtil.java

package com.wumeng.wordexport;import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigInteger;/*** @author wumeng 2024/6/27 18:03*/
public class SimpleWordUtil {/*** 获取表格属性* @param table* @return*/public static CTTblPr getTableCTTblPr(XWPFTable table) {CTTbl ttbl = table.getCTTbl();// 表格属性CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();return tblPr;}/*** 设置表格宽度和水平对齐方式* @param table* @param width* @param enumValue*/public static void setTableWidthAndHAlign(XWPFTable table, String width,STJcTable.Enum enumValue) {CTTblPr tblPr = getTableCTTblPr(table);// 表格宽度CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();if (enumValue != null) {CTJcTable ctJcTable = tblPr.addNewJc();ctJcTable.setVal(enumValue);}// 设置宽度tblWidth.setW(new BigInteger(width));tblWidth.setType(STTblWidth.DXA);}/*** 保存文档* @param document* @param savePath* @throws IOException*/public static void saveDocument(XWPFDocument document, String savePath) throws IOException {OutputStream os = new FileOutputStream(savePath);document.write(os);os.close();}
}

运行,就可以看到效果了!!

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

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

相关文章

收银系统源码-开源收银系统-私有化独立部署

千呼新零售2.0-支持OEM私有化独立部署和全开源源码 千呼新零售2.0-支持OEM私有化独立部署和全开源源码 千呼新零售2.0-支持OEM私有化独立部署和全开源源码 千呼新零售2.0-支持OEM私有化独立部署和全开源源码 如需了解请私信交流

电脑系统重装怎么操作?分享四个win10重装系统方法

“我遇到了一些笔记本电脑的问题&#xff0c;别人告诉我解决这个问题需要重新安装Win10电脑系统。但我不记得我把光盘放在哪里了&#xff0c;我能否在不丢失文件的情况下重新安装操作系统&#xff1f;电脑系统重装怎么操作&#xff1f;”虽然电脑自带系统中有多种方法可供选择&…

【最佳实践】前端如何搭建自己的cli命令行工具,让自己编码的时候如虎添翼

作为前端开发人员&#xff0c;搭建自己的前端CLI工具是一个有趣且有意义的事情。以下是一篇详细的教程&#xff0c;包括使用场景和案例。 使用场景 假设你是一个前端团队的一员&#xff0c;需要频繁地在不同的项目中执行一些标准化的任务&#xff0c;比如&#xff1a; 根据模…

【02-02】SpringMVC基于注解的应用

一、请求处理 1、常用注解 RequestMapping 作用&#xff1a;用来匹配客户端发送的请求&#xff08;用来处理URL映射&#xff0c;将请求映射到处理方法中&#xff09;&#xff0c;可以在类或者方法上使用。 用在类上&#xff0c;可以将请求模块化&#xff0c;避免请求方法中的…

前端 Array.sort() 源码学习

源码地址 V8源码Array 710行开始为sort()相关 Array.sort()方法是那种排序呢&#xff1f; 去看源码主要是源于这个问题 // In-place QuickSort algorithm. // For short (length < 22) arrays, insertion sort is used for efficiency.源码中的第一句话就回答了我的问题…

微软发布Phi-3系列语言模型:手机端的强大AI助手

大模型&#xff08;LLMs&#xff09;在处理复杂任务时展现出的巨大潜力&#xff0c;但却需要庞大的计算资源和存储空间&#xff0c;限制了它们在移动设备等资源受限环境中的应用。微软公司最新发布的Phi-3系列语言模型&#xff0c;以其卓越的性能和小巧的体积&#xff0c;打破了…

FairGuard游戏加固无缝兼容 Android 15 预览版

2024年6月25日&#xff0c;谷歌发布了 Android 15 Beta 3 &#xff0c;作为Android 15 “平台稳定性”的里程碑版本&#xff0c;谷歌建议所有应用、游戏、SDK、库和游戏引擎开发者都将“平台稳定性”里程碑版本作为规划最终兼容性测试和公开发布的目标。 安卓开发者博客提供的版…

积分的可视化

积分的可视化 flyfish 考虑平方根函数 f ( x ) x f(x) \sqrt{x} f(x)x ​&#xff0c;其中 x ∈ [ 0 , 1 ] x \in [0, 1] x∈[0,1] 。在区间 [ 0 , 1 ] [0, 1] [0,1] 上&#xff0c;函数 f f f 下方的面积是指函数 y f ( x ) y f(x) yf(x) 的图像与 x x x 轴之间的部…

【微服务网关——中间件实现】

1.中间件的意义 避免成为if狂魔提高复用、隔离业务调用清晰、组合随意 2.实现原理 中间件一般都封装在路由上&#xff0c;路由是URL请求分发的管理器中间件选型 基于链表构建中间件 基于责任链的实现缺点&#xff1a;实现复杂&#xff0c;调用方式不灵活 使用数组构建中间件 控…

cad怎么导出为图片?分享四种导出方法

cad怎么导出为图片&#xff1f;在工程设计、建筑设计、机械设计等领域&#xff0c;CAD图纸的编辑和分享是一项日常工作。然而&#xff0c;如何将CAD图纸高效、准确地导出为图片格式&#xff0c;一直是设计师们关注的焦点。今天&#xff0c;就为大家推荐四款强大的CAD导出图片软…

连接Huggingface报requests.exceptions.SSLError错误

最近在学习使用 SHAP 算法解释 BERT 模型的输出结果&#xff0c;然而在从 Huggingface 上导入模型和数据集的过程中出现了网络连接相关的错误&#xff0c;本文用于记录错误类型和解决错误的方法。 1 代码示例 SHAP 官方展示的代码如下&#xff1a; import datasets import nu…

企业微信内嵌H5项目接入聊天功能

产品需求是,在列表中把符合条件的列表接入聊天功能,以下是详细步骤: 1.引入企业微信 <script src"https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js"></script> 2.获取wx签名(必须要) /*** 获取wx签名**/ export function getWxJsApi(data) {r…

如何在信创领域中做好防泄露

随着信息技术的迅猛发展&#xff0c;数据安全和防泄露成为了企业和政府机构面临的重大挑战。在信创&#xff08;Creative and Innovative Intelligent Products&#xff09;领域中&#xff0c;沙箱技术以其独特的隔离和保护机制&#xff0c;成为了防泄露的关键手段之一。 一、沙…

上古世纪战争台服官网地址+台服预约+预创建角色教程

上古世纪战争台服上线啦&#xff0c;在《上古世纪战争》中&#xff0c;通过主要势力和地区&#xff0c;剧情和角色可以想起原作。《上古世纪战争》的主要背景为&#xff0c;原大陆消失之后&#xff0c;完成移民的种族们定居在诺伊大陆之后遇到的多个势力之间的冲突。同时&#…

鸿蒙期末项目(4)

day4 页面的设计与编写基本完成&#xff0c;接下来使用我们之前搭建好的服务器与相关的网络接口将鸿蒙中的逻辑真正实现一下。 在实现购物车页面展示功能时&#xff0c;使用了如下代码&#xff1a; getCartList(uid: number): Promise<CartItem[]> {return new Promise…

MTK平台Android13实现三方launcher为默认

一、前言 目前有遇到客户的定制需求,希望使用三方的launcher作为默认的launcher使用,一般情况下直接将三方launcher通过内置到系统并通过overlay机制即可很方便的实现launcher的替换,但是存在一个问题,需要增加ROM的维护成本。本文通过设备在使用前联网通过后台下发三方lau…

基于SpringBoot的财务管理系统

根据您提供的论文内容和模板要求&#xff0c;以下是定制化的文章输出&#xff1a; 你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBoot…

沙龙圆满举行 | 数据资产入表新动向·驱动企业新质生产力!

近日&#xff0c;由四川智慧城市发展联盟、璞华科技有限公司等公司主办的“数据治理与入表专题沙龙会”在成都圆满落幕。璞华科技有限公司作为数据治理、数据资产入表领域的领军企业&#xff0c;为此次盛会贡献了我们的专业见解与实战经验。 沙龙现场&#xff0c;业内精英齐聚一…

Redis优化之持久化

目录 1.Redis高可用 2.Redis持久化 2.1 RDB持久化 2.1.1 触发条件 2.1.2 执行流程 2.1.3 启动时加载 2.2 AOF持久化 2.2.1 开启AOF 2.2.2 执行流程 2.2.3 文件重写触发方式 2.2.4 文件重写的流程 2.2.5 启动时加载 2.3 RDB和AOF的优缺点 3.Redis性能管理 3.1 查看…

btrace使用记录

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、使用三、 推荐阅读 一、导…