使用Apache POI(Java)创建docx文档和表格

1、引入poi 依赖组件

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>

2、使用

1.引入库

import org.apache.poi.xwpf.usermodel.*;

2.初始化一个空文件,生成文档后写入文件中

public static File createFile() {Filefile = null;try {// 初始化模板文件String path = "./testFile.docx";Path path2 = Paths.get(path);boolean exists = Files.exists(path2);if (exists) {Files.delete(path2);file = new File(path);} else {file = new File(path);}} catch (IOException e) {log.error("初始化file失败", e.getMessage());}return file;
}

3.创建 XWPFDocument 对象,create段落

XWPFDocument document = new XWPFDocument();
// 创建文档中的段落
XWPFParagraph paragraph = document.createParagraph();
paragraph .setAlignment(ParagraphAlignment.CENTER); // 对齐方式
XWPFRun run = paragraph .createRun();
// 设置段落属性
run.setText("这是一段文字,代表一个段落内容!");
run.setBold(true);
run.setFontSize(18);
run.setFontFamily("微软雅黑");
run.addCarriageReturn();// 增加回车空行
run.setKerning(30);
段落循环创建

4.使用 XWPFDocument 对象创建表格

// 创建表格 n行*m列(创建table 时,会有一个默认一行一列的表格)
XWPFTable table = document.createTable(n, m);
table.setWidth("100%");// 表格所占文档宽度
// 获取第一行
XWPFTableRow row = table.getRow(0);// 设置表格标题行
// 标题行,每一列的名称都放入List中,可以循环设置列标题
List<String> titles = Lists.newArrayList();// 标题行集合
for (int i = 0; i < titles.size(); i++) {XWPFTableCell cell0 = row.getCell(i);cell0.setWidth(width + "%"); // 设置单元格宽度cell0.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); // 设置对齐方式// 单元格的标题假设为一个段落内容,就可以方便设置标题的样式,字体、大小、颜色等XWPFParagraph paragraph = cell0.addParagraph();paragraph.setAlignment(ParagraphAlignment.CENTER);// 设置对齐方式XWPFRun run = paragraph.createRun();run.setText("这是一个标题");run.setFontSize(16);// 大小run.setBold(true);// 是否加粗run.setFontFamily("方正仿宋");// 字体格式
}
* 或使用简单方式创建标题行,使用自适应样式
XWPFTableCell cell = rows.getCell(0);
buildAlignment(cell); // 单元格中的标题内容对齐方式
cell.setWidth("5%"); // 宽度
cell.setText("这也是一个标题");/**
* 设置单元格样式
* @param cell cell
*/
private static void buildAlignment(XWPFTableCell cell) {CTTcPr cellPr = cell.getCTTc().getTcPr() == null ? cell.getCTTc().addNewTcPr() : cell.getCTTc().getTcPr();if (cellPr.getVAlign() == null) {cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);} else {cellPr.getVAlign().setVal(STVerticalJc.CENTER);}XWPFParagraph paragraph1=cell.getParagraphArray(0);paragraph1.setAlignment(ParagraphAlignment.CENTER);
}

5.将创建的XWPFDocument对象 写入文件中

FileOutputStream fos= new FileOutputStream(file);
document.write(fos);
fos.close(); // 关闭流增加判断,不可直接关闭
// docx文件创建结束!

up

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用 RNN 预测股票价格:从数据处理到可视化实战

在金融领域&#xff0c;预测股票价格走势一直是众多投资者和研究者关注的焦点。今天&#xff0c;我们将利用深度学习中的循环神经网络&#xff08;RNN&#xff09;来构建一个简单的股票价格预测模型&#xff0c;并详细介绍从数据加载、预处理、模型搭建、训练到最终结果可视化的…

华为RH2288H V3服务器极速重装:从RedHat到openEuler 24超详细重装指南

1 登录iBMC口 2 配置启动项 点击&#xff1a;配置&#xff0c;点击&#xff1a;系统启动项 点击&#xff1a;单次有效&#xff0c;选择&#xff1a;光驱&#xff0c;点击&#xff1a;保存 3 进Remote Contro 点击&#xff1a;远程控制&#xff0c;进入如下界面 点击&#xff1…

+++++背到厌倦。持续更新

Spring IoC 的工作流程: 读取 BeanDefinition: Spring 容器启动时&#xff0c;会读取 Bean 的配置信息 (例如 XML 配置文件、注解或 Java 代码)&#xff0c;并将这些配置信息转换为 BeanDefinition 对象。创建 Bean 实例: 根据 BeanDefinition 中的信息&#xff0c;Spring 容器…

【机器学习算法】基于python商品销量数据分析大屏可视化预测系统(完整系统源码+数据库+开发笔记+详细启动教程)✅

目录 一、项目背景 二、技术思路 三、算法介绍 四、项目创新点 五、开发技术介绍 六、项目展示 一、项目背景 本项目基于Python技术栈构建了"商品销量数据分析与预测系统"&#xff0c;通过自动化爬取淘宝商品多维数据&#xff08;价格、销量、评价、品类等&a…

Server-Sent Events一种允许服务器向客户端发送实时更新的 Web API

Server-Sent Events&#xff08;SSE&#xff09;是一种允许服务器向客户端发送实时更新的 Web API。它基于 HTTP 协议&#xff0c;提供了一种单向的、服务器到客户端的通信机制&#xff0c;客户端可以通过监听服务器发送的事件来接收实时数据。下面从原理、使用场景、代码示例等…

用Perl和HTTP::Tiny库的爬虫

HTTP::Tiny是Perl的一个轻量级HTTP客户端&#xff0c;适合简单的请求&#xff0c;但不像LWP那样功能全面&#xff0c;不过对于基本需求应该足够了。 首先&#xff0c;我需要熟悉HTTP::Tiny的基本用法。比如如何发起GET请求&#xff0c;设置user-agent&#xff0c;处理响应。用…

Vue3性能优化终极指南:编译策略、运行时调优与全链路监控

一、Vue3性能优化体系框架 1.1 性能优化全景图谱 1.2 关键性能指标定义表 指标测量方式优化目标核心影响因子FCPLighthouse<1.5s资源加载速度LCPPerformance API<2.5s关键资源大小TTIWebPageTest<3.5s主线程阻塞时间Memory UsageChrome DevTools<50MB对象引用策略…

sqlite3基本语句

创建表 CREATE TABLE student ( id INTEGER PRIMARY KEY, -- 学号&#xff0c;主键 name TEXT NOT NULL, -- 姓名&#xff0c;不能为空 age INTEGER, -- 年龄 gender TEXT -- 性别 ); SQLite常用数据类型 主键 …

蓝桥杯补题

方法技巧&#xff1a; 1.进行循环暴力骗分&#xff0c;然后每一层的初始进行判断&#xff0c;如果已经不满足题意了&#xff0c;那么久直接continue&#xff0c;后面的循环就不用浪费时间了。我们可以把题目所给的等式&#xff0c;比如说有四个未知量&#xff0c;那么我们可以用…

配置与管理代理服务器

安装squid Squid软件包在标准yum存储库中可用&#xff0c;因此&#xff0c;我们正在使用yum命令安装Squid代理。 [rootserver ~]# dnf install -y squid //安装 [rootserver ~]#systemctl enable --now squid.service [rootserver ~]#systemctl status squid.serv…

《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第六篇:页面跳转功能实现(Router的引入和使用)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 《从零搭建Vue3项目实战》&#xff08;AI辅助…

Windows 图形显示驱动开发-WDDM 2.0功能_分配用法跟踪

随着分配列表的消失&#xff0c;视频内存管理器 (VidMm) 不再能够查看特定命令缓冲区中引用的分配。 因此&#xff0c;VidMm 不再能够跟踪分配使用情况和处理相关同步。 此责任现在由用户模式驱动程序 (UMD) 承担。 具体而言&#xff0c;UMD 需要处理与直接 CPU 访问分配和重命…