使用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
相关文章:
使用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>&…...
Dynamics365 ExportPdfTemplateExportWordTemplate两个Action调用的body构造
这两天在用ExportPdfTemplate做pdf导出功能时,遇到了如下问题InnerException : Microsoft.OData.ODataException: An unexpected StartArray node was found when reading from the JSON reader. A PrimitiveValue node was expected. 我的场景是使用power automate…...
《算法笔记》3.3小节——入门模拟->图形输出
1036 跟奥巴马一起编程 #include <iostream> #include <cmath> using namespace std;int main() {int n,m;char c;cin>>n>>c;for (int i 0; i < n; i) {cout<<c;}cout<<endl;m round(1.0*n/2)-2;//round里面不能直接写n/2,…...
iOS 上的内存管理是如何处理的?
iOS主要通过自动引用计数(ARC)和内存管理模型来处理内存。以下是对这两者的详细介绍以及在实际工作中的应用场景: 1. 自动引用计数(ARC) ARC是iOS和macOS中的内存管理机制。它能自动跟踪和管理应用程序的内存使用情况…...
河北工程大学e2e平台,python
题目,选择题包100分! 题目,选择题包100分! 题目,选择题包100分! 联系🛰:18039589633...
【Qt】spdlog日志模块的使用
版本 spdlog版本:1.5.0 采用1.5.0版本主要基于以下考虑:兼容Qt5.9.X版本和兼容C11。 spdlog 1.5.0下载地址:https://github.com/gabime/spdlog/releases/tag/v1.5.0 摘要 在Qt应用程序开发中,良好的日志系统至关重要。本文将介…...
python相关面试题
python相关面试题 1.上下文管理器需要实现哪两种方法以及相关应用 2.对比一下进程,线程和协程 3.魔法函数有哪些 4.什么是闭包和装饰器,装饰器缺点是什么 5.什么是浅拷贝和深拷贝 6.什么是GIL锁和互斥锁 7.init和new有什么区别,new方法的返回…...
swift菜鸟教程11-12(数组与字典)
一个朴实无华的目录 今日学习内容:1.Swift 数组1.1创建数组1.2访问数组1.3修改数组使用 append() 方法或者赋值运算符 在数组末尾添加元素通过索引修改数组元素的值: 1.4遍历数组 使用for-in循环同时需要每个数据项的值和索引值 1.5合并数组1.6count 属…...
.NET WPF 控件类分层结构
.NET WPF 控件类分层结构 在 WPF 中,类的层级结构设计是为了实现线程安全、依赖属性、可视化渲染、布局和交互等功能。以下是 WPF 核心基类的逐级说明,从最底层到最顶层: 1 DispatcherObject 作用: 提供与 WPF 线程模型…...
基于ImGui+FFmpeg实现播放器
基于ImGuiFFmpeg实现播放器 演示: ImGui播放器 继续研究FFmpeg,之前做了一个SDL的播放器,发现SDL的可视化UI界面的功能稍微差了点,所以今天我们换了一个新的工具,也就是ImGui。 ImGui官方文档:https://g…...
【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书
【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书 引言 Certbot 是一个免费的开源工具,用于自动化管理和获取 SSL/TLS 证书,主要用于与 Let’s Encrypt 证书颁发机构交互。 步骤 Nginx 挂载 certbot 文件夹。 docker run -d \--name…...
MATLAB编写的机械臂控制仿真程序,它主要实现了对一个二连杆机械臂的运动控制仿真,比较了PID控制和非线性模型预测控制两种方法在机械臂轨迹跟踪任务中的性能
clc; clear; close all;%% 机械臂参数 l1 0.5; l2 0.4; Ts 0.02; sim_time 60; t 0:Ts:sim_time;%% 物理参数 m1 1.0; m2 0.8; g 9.81;%% 直线轨迹参数 start_point [0.3; 0.1]; end_point [0.7; 0.3]; progress t/sim_time; xd start_point(1) (end_point(1) - s…...
python办公自动化------word文件的操作
一、 word文件的创建 需要安装包:python-docx 例1:创建word文件 from docx import Document# 创建doc对象 doc Document()# 指定路径下创建一个docx文件 doc.save(./dataFile/test1_doc.docx) 运行结果: 例2:word中添加内容 …...
Python小程序 - 文件处理3:正则表达式
正则表达式:文本年鉴表。遗留的问题很多。。。用AI再想想 需求:读入txt文件,过滤文件有关年记录 0)读入txt文件 1)以“。”,中文句号,为界区分一句,最小统计单位 2)年格…...
JAVA中正则表达式的入门与使用
JAVA中正则表达式的入门与使用 一,基础概念 正则表达式(Regex) 用于匹配字符串中的特定模式,Java 中通过 java.util.regex 包实现,核心类为: Pattern:编译后的正则表达式对象。 Matcher&#…...
智慧能源管理平台:驱动电网数字化转型,引领绿色能源新时代
安科瑞 华楠18706163979 一、引言 在全球能源转型和"双碳"目标的推动下,微电网作为分布式能源系统的重要组成部分,正迎来快速发展期。安科瑞电气股份有限公司推出的微电网智慧能源管理平台(EMS 3.0),通过整…...
OpenCV 图形API(30)图像滤波-----腐蚀操作函数erode()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用特定的结构元素腐蚀图像。 cv::gapi::erode 是 OpenCV 的 G-API 模块中用于执行图像腐蚀操作的函数。腐蚀是一种基本的形态学操作࿰…...
02-MySQL 面试题-mk
1.如何定位慢查询? 什么是慢查询? 页面加载过慢、接口压测响应时间过长(超过1s) 慢查询出现的情况有哪些? 聚合查询多表查询表数据量过大查询深度分页查询如何定位慢查询? 方案一:开源工具 调试工具:Arthas运维工具:Prometheus、Skywalking**Arthas:**可以使用命令的…...
利用安固软件实现电脑屏幕录像:四种实用方法分享
在日常工作中,有时我们需要录制电脑屏幕以进行教学演示、软件操作记录或重要会议的存档。安固软件终端安全管理系统提供了强大的屏幕录像功能,可以满足这些需求。 接下来,本文将介绍如何使用安固软件设置电脑实时画面录像,并分享…...
Gitee DevSecOps 以 CBB 驱动军工研发范式革新:平台化管理构件实践
随着军工软件向智能化、标准化与集约化发展,传统研发模式在效率、质量及协同方面面临显著瓶颈。项目规模扩大与系统复杂度的提升,亟需一种创新研发范式。Gitee DevSecOps 平台基于 CBB(通用构件库)理念,通过模块化、标…...
spring:xml方式调用构造方法创建Bean,调用set方法配置字段
如题: 要创建的Bean类UserServiceImpl02 : package com.itheima.service.impl;import com.itheima.dao.interfaces.InterfaceUserDao; import com.itheima.service.interfaces.InterfaceUserService;/*** copyright 2003-2024* author qiao wei* da…...
PM2 完全指南:Node.js 应用后台启动、关闭与重启详解
文章目录 **PM2 完全指南:Node.js 应用后台启动、关闭与重启详解****1. 什么是 PM2?****2. 安装 PM2****全局安装****验证安装** **3. 使用 PM2 启动 Node.js 应用****基本启动****指定应用名称****集群模式(多进程负载均衡)****监…...
LeetCode算法题(Go语言实现)_40
题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。 请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。 一、代码实现 import &…...
网关与路由器知识点
1.自治系统是由同构型的网关连接的因特网。自治系统内部的网关之间执行内部网关协议IGP,半天自治系统之间用外部网关协议EGP交换路由信息。 2.BGP4是一种动态路由发现协议,支持无类别域间路由CIDR,应用于不同ISP的网络之间,成为事…...
【Hadoop入门】Hadoop生态之Pig简介
1 什么是Pig? 在大数据分析领域,Apache Pig是一个不可忽视的重要工具。Pig是Apache Hadoop生态系统中的一个高级数据分析平台,它提供了一种称为Pig Latin的脚本语言,用于简化大规模数据集的并行处理。Pig的核心思想是将复杂的数据…...
TPS入门DAY04 服务器篇
1.创建委托并绑定回调,实现解耦 /* 创建会话完成 */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMultiPlayerOnCreateSessionCompleted, bool, bWasSuccessful); /* 开始会话完成 */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMultiPlayerOnStartSessionC…...
YOLO学习笔记 | YOLOv8环境搭建全流程指南(2025.4)
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== YOLOv8环境搭建 一、环境准备与工具配置1. Conda虚拟环境搭建2. CUDA与…...
Java 设计模式:适配器模式详解
Java 设计模式:适配器模式详解 适配器模式(Adapter Pattern)是一种结构型设计模式,它通过将一个类的接口转换为客户端期望的另一个接口,使原本不兼容的类能够协同工作。适配器模式就像现实生活中的电源适配器…...
Java的基本语法(1)
一、运算符和表达式 举例说明什么是运算符,什么是表达式: int a 1; int b 2; int c a b; 在这个例子当中,是运算符,并且是算术运算符 ab是表达式,因为是运算符,所以ab是算术表达式 1.1算术运算符 …...
Spark-Core编程二
23) sortByKey import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Cww { def main(args: Array[String]): Unit { // 创建 SparkConf 对象,设置应用名称和运行模式 val conf new SparkConf().setAppName("SortBy…...
【antd + vue】Modal 对话框:修改弹窗标题样式、Modal.confirm自定义使用
一、标题样式 1、目标样式:修改弹窗标题样式 2、问题: 直接在对应css文件中修改样式不生效。 3、原因分析: 可能原因: 选择器权重不够,把在控制台找到的选择器直接复制下来,如果还不够就再加ÿ…...
JavaWeb 课堂笔记 —— 08 请求响应
本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…...
DataWorks智能体Agent发布!基于MCP实现数据开发与治理自动化运行
在传统的数据开发工作中,企业用户或者开发者常常需要进行繁琐的配置、复杂的代码撰写、反复的性能调优和大量重复性的操作,才能实现数据开发、数据集成和数据治理等工作,效率十分低下。 近日,阿里云大数据开发治理平台DataWorks基…...
VitePress 项目部署 cloudflare page 提示 Node 构建错误
提示的构建错误信息为: 09:35:29.838 Error: Exit with error code: 1 09:35:29.839 at ChildProcess.<anonymous> (/snapshot/dist/run-build.js) 09:35:29.839 at Object.onceWrapper (node:events:652:26) 09:35:29.839 at ChildProcess.emit …...
VUE的node包缓存很严重,问题及解决办法
以下是一些可能导致缓存问题的地方以及如何检查和解决这些问题的建议: 1. 检查依赖包的版本是否过时 某些依赖包可能有已知的缓存问题或性能问题。以下是需要特别注意的几个包: Vue CLI 相关: vue/cli-service 和 vue/cli-plugin-babel 的版…...
<C#>在 .NET 开发中,依赖注入, 注册一个接口的多个实现
在 .NET 开发里,有时一个接口会有多个实现类,此时就需要向依赖注入容器注册多个实现。下面会详细介绍不同场景下如何注册多个实现,以及怎样从容器中解析这些实现。 1. 注册多个实现 在 .NET 中,依赖注入容器可以通过不同方式注册…...
计算机视觉色彩空间全解析:RGB、HSV与Lab的实战对比
计算机视觉色彩空间全解析:RGB、HSV与Lab的实战对比 一、前言二、RGB 色彩空间2.1 RGB 色彩空间原理2.1.1 基本概念2.1.2 颜色混合机制 2.2 RGB 在计算机视觉中的应用2.2.1 图像读取与显示2.2.2 颜色识别2.2.3 RGB 色彩空间的局限性 三、HSV 色彩空…...
美食推荐小程序
用户端 1. **定位与筛选** - **精准定位**:根据用户所在位置,推荐周边美食餐厅。 - **筛选条件**:支持按菜系(如川菜、粤菜)、价格区间、评分、距离远近等筛选餐厅。 2. **餐厅展示** - **基本信息**:…...
使用django实现windows任务调度管理
在 Django 中实现 Windows 任务调度管理,你可以使用几种不同的方法。最常见的方法是使用 Django 自带的 celery 或者 django-background-tasks 库,或者使用 Windows 自带的任务计划程序。下面我会分别介绍这几种方法: 方法 1:使用…...
【Android】Android 打包 Release 崩溃问题全解析:Lint 错误、混淆类丢失及解决方法大全
摘要: 在 Android 项目的 Release 打包过程中,经常遇到诸如 Lint 校验失败、程序闪退、类找不到等问题。本文将详细分析 Android 打包时常见的崩溃原因,特别是如何应对 Lint 报错、混淆引发的类丢失(NoClassDefFoundError…...
【Python 开源】你的 Windows 关机助手——PyQt5 版定时关机工具
🖥️ 你的 Windows 关机助手——PyQt5 版定时关机工具 相关资源文件已经打包成EXE文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着开源精神的…...
布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维
摘要:在商业竞争日益激烈的当下,布局与终局预判成为企业成功的关键要素。本文探讨了布局与终局预判的智慧性,强调其虽无法做到百分之百准确,但能显著提升思考能力。终局思维作为重要战略工具,并非一步到位的战略部署&a…...
vue3循环表单【以el-form组件为例】,如何校验所有表单,所有表单校验通过后提交
1.循环时,在组件标签上使用ref绑定组件实例 3.如何校验所有表单都通过后方可提交?利用promise.all()判断 代码如下: <template><div><!-- 循环渲染表单 --><el-formv-for"(formItem, index) in formList":…...
量子代理签名:量子时代的数字授权革命
1. 量子代理签名的定义与核心原理 量子代理签名(Quantum Proxy Signature, QPS)是经典代理签名在量子信息领域的延伸,允许原始签名者(Original Signer)授权给代理签名者(Proxy Signer)代为签署文…...
HTTPS代理的实际优势,如何选择HTTPS代理服务?
在数字化时代,网络请求的安全性和效率成为企业和个人用户关注的焦点。HTTPS代理作为一种强大的工具,不仅在数据安全方面表现出色,还在安全访问、突破地域限制以及支持复杂任务等方面展现出多样化的优势。本文将深入探讨HTTPS代理的实际优势&a…...
Java 中常见的数据结构
目录 1. List (列表) 2)ArrayList 2)LinkedList 2. Set (集合) 1)HashSet 2)TreeSet 3. Map (映射) 1)HashMap 2)TreeMap 4. Queue (队列) 1)LinkedList (也实现了Queue接口) 2&…...
Transformer多卡训练初始化分布式环境:(backend=‘nccl‘)
Transformer多卡训练初始化分布式环境:(backend=‘nccl’) dist.init_process_group(backend=nccl)在多卡环境下初始化分布式训练环境,并为每个进程分配对应的 GPU 设备。下面为你逐行解释代码的含义: 1. 初始化分布式进程组 try:dist.init_process_group(backend=nccl) e…...
云曦月末断网考核复现
Web 先看一个BUUCTF中的文件一个上传题 [BUUCTF] 2020新生赛 Upload 打开后是一个文件上传页面 随便上传一个txt一句话木马后出现js弹窗,提示只能上传图片格式文件 说明有前端验证。我的做法是把一句话改为.jpg格式, 然后上传 访问发现虽然上传成功了…...
SQL Server AlwaysOn (SQL 查询数据详解及监控用途)
修正后的完整查询 SELECT ar.replica_server_name AS [副本名称],ar.availability_mode_desc AS [同步模式],DB_NAME(dbr.database_id) AS [数据库名称],dbr.database_state_desc AS [数据库状态],dbr.synchronization_state_desc AS [同步状态],dbr.synchronization_health_d…...
使用 Q - learning 算法解决迷宫路径规划问题
整体功能概述 这段 Python 代码实现了一个使用 Q - learning 算法解决迷宫路径规划问题的程序。智能体在给定的迷宫环境中学习如何找到从起点到终点的最优路径,以获得最大奖励。 模块导入 python import numpy as np import randomnumpy:用于处理数组…...