java使用poi简单操作excel

文章目录

    • 引言
    • 插入行/列
    • 合并单元格以及设置居中
    • 换行

引言

编程开发中,我们可能会接到某些需求,例如导出某某某列表数据,或者做一份报表,这时候就需要我们的poi出场了,至于一些规则数据的导出,直接使用easy-poi即可,操作简单,极易上手,在这里就不做过多的赘述,本文今天主要讲解一些poi原生的操作,以便于在老表格中对数据进行更新或者合并等

插入行/列

与其说插入,我们不如说是平移,给新的行/列留出位置,进行创建,废话不多说,我们直接上代码

/*** 平移,传入值为需要操作的文件*/private void shift(Workbook workbook) {// 获取第0个表格Sheet sheet = workbook.getSheetAt(0);// 移动行,第一个参数是起始行(0开始),第二个参数为最后一行,第三个参数为移动多少,正数向下,负数向上// 现在这个参数则是,从index是1的行到当前最后一行,整体向下平移2行sheet.shiftRows(1, sheet.getLastRowNum(), 2);// 移动列// index是1的列到index是3的列向右平移两列sheet.shiftColumns(1, 3, 2);}

合并单元格以及设置居中

合并单元格比较简单,但是需要注意,先合并单元格,再填充内容,否则很容易将单元格的已填充内容丢失。默认合并后保留第一个单元的内容

 private void merged(Workbook workbook) {Sheet sheet = workbook.getSheetAt(0);// 设置格式,都是通过CellStyle进行设置,其中可以设置字体、居中等属性CellStyle center = workbook.createCellStyle();// 这里设置水平居中,其他的直接看注释即可,当然,在这个位置只是创建样式,并未生效center.setAlignment(HorizontalAlignment.CENTER);// 创建一行,这里不用getRow()而使用create是因为get可能会存在行不存在的情况,会抛出空指针,后续的列也是如此Row row = sheet.createRow(1);Cell tf = row.createCell(0);tf.setCellValue("甲方名称");// 设置单元格内的样式必须在Cell中设置,否则不会生效tf.setCellStyle(center);// 这里是合并单元格,必须是Sheet对象。// 传入值是合并位置,这里表示(1,2,4,5都是下标),从第1行到第2行,其中的第4列和第5列的单元格合并为一个单元格sheet.addMergedRegion(new CellRangeAddress(1, 2, 4, 5));// 这里需要注意,即使是合并了单元格,原有的index也不会变,例如,第1,2个单元格合并后,他的index也是1,但是它占有的index也是1,2,后续的单元格就是3,4}

例如下图所示:
用1,2,3,4代表单元格下标
当1,2单元格合并后,合并后单元格index是1,但是3,4单元格的index还是3和4
在这里插入图片描述

换行

		// 这里有两个条件,第一个是\n标识换行,当然只是这个没用,第二个则是WrapText必须设置为trueint last = sheet.getLastRowNum();String format = "公司名称:%s \n 开户行:%s \n 账号:%s";format = String.format(format, vo.getSettlementCompany(), vo.getSettlementBank(), vo.getSettlementCard());Row bank = sheet.createRow(last + 1);bank.setHeight((short) 1000);Cell cell = bank.createCell(0);cell.setCellValue(format);// 设置格式CellStyle cellStyle = workbook.createCellStyle();// 设置自动换行cellStyle.setWrapText(true);cell.setCellStyle(cellStyle);

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

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

相关文章

springcloud搭建 初级人员的使用搭建。sentinel使用官网有详细的使用方法

代码仓库地址:https://github.com/zhaoyiwen-wuxian/shop-trench package com.trench.filters;import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework…

Sora问世引发热议,一部分人已靠它赚钱?

这几天, 估计大家都被一款叫Sora的“文生视频”工具狠狠地刷屏了 问:Sora到底是什么 答:Sora是OpenAI发布的“核弹级”AI视频模型产品,“文生视频”60秒一镜到底,效果堪称“炸裂”! OpenAI公司发布最新…

vue项目设置的端口号运行后会自动加一问题解决

vue项目设置的端口号运行后会自动加一问题解决 主要原因是之前运行项目后没有完全的关闭服务,导致再次运行项目端口号被占用,自动加一! 问题解决 打开任务管理器,在进程中找到node相关进程,右键结束任务

Typescript初体验

Typescript Typescript 官网地址: https://www.typescriptlang.org/zh/ 使用 nvm 来管理 node 版本: https://github.com/nvm-sh/nvm 装 Typescript: npm install -g typescript使用 tsc 全局命令: // 查看 tsc 版本 tsc -v // 编译 ts 文件 tsc fileName.ts1.…

利用数字人技术“活”化吉祥物,打造“科技+”数融盛会

在第十四届全国冬季运动会上,吉祥物“蒙古彩娃”安达和塞努不再同于往常静态的吉祥物形象,而是升级为生动活泼、能够与观众实时互动的数字人形象,活跃于赛事宣传、场馆介绍等多个场景,为本届冰雪盛会注入数字活力,提升…

java中反射详解

反射详解 反射什么是反射?常见操作反射中常用类1.Class类获取Class对象的三张方式类名通过forName()方法通过对象 2.Constructor类获取Constructor构造方法的方式执行Constructor构造方法的方式 3.Field类获取Field成员变量的方式获取所有成员…

Orchestrator源码解读 - 如何执行钩子脚本

Oc支持的钩子脚本 orchestrator支持钩子脚本,即在恢复过程调用的外部脚本。这些是通过 shell 调用的命令数组 OnFailureDetectionProcesses // 故障发现阶段PreGracefulTakeoverProcesses // 计划内切换流程之前执行,在master设置read_only 之前执行…

RoboRAVE世界机器人大会亚洲分会toio™专项挑战顺利收官,toio™实现“双首次”突破

2024年2月21日,北京——2024 RoboRAVE国际教育机器人大会(下称RoboRAVE)亚洲分会toio™专项挑战在北京科技大学成功举办。现场云集来自华北、华南、华东等全国各地40组杰出学生队伍,展开热烈的机器人编程限时挑战。本届toio™专项…

大模型中的token是什么?

定义 大模型的"token"是指在自然语言处理(NLP)任务中,模型所使用的输入数据的最小单元。这些token可以是单词、子词或字符等,具体取决于模型的设计和训练方式。 大模型的token可以是单词级别的,也可以是子…

项目总结(ALL)

项目1: 卡尔曼滤波(以及其他的滤波方法对比) 预处理 GRU,LSTM等时间序列预测方法 MPC(模型预测控制) 单机控制算法 粒子群优化算法 1. 卡尔曼滤波 smoother KalmanSmoother(componentlevel_trend,…

Docker安装Postgresql12

1、搜索仓库中postgres docker search postgres 2、拉取镜像 docker pull postgres docker pull postgres:12 #拉取12版本的PG库 3、创建数据库文件夹 cd /temp/ && mkdir -m 755 postgres-data 注:-m表示权限,类chmod命令 4、执行命令启动…

echarts - 数据更新但图表不更新

当修改setOption值的时候,如果 option.series 是动态增加减少,图表渲染会出错。 比如,echarts 图表一开始只有单一的柱状图,后来通过 option.series 动态插入数据,新增折线图。这时候 echarts 图表是柱状图折线图&…

并发编程入门指南

文章目录 并发编程进程和线程的区别并发和并行的区别创建线程的方式线程之间的状态,状态之间的转换新建三个线程,如何保证按顺序执行wait方法和sleep的区别如何停止一个正在运行的线程synchronized关键字底层原理Monitor属于重量级锁,了解过锁…

day04_流程语句_if_while_for

今日内容 1.if 2.switch 3.while,do-while,for 零、复习 1算术运算符中除法特性 整数相除不保留小数 10/33 2什么作用,i和i什么区别 让数据自增1i,是在后先使用后自增i,是在前先自增后使用 3&& 和 & 有相同点和不同点 相同点: 两边判断式子,一错就错全对才对不同点…

HTML+CSS滚动条样式如何单独给firefox设置 scrollbar-width: none;,而不影响其他浏览器

要在Firefox中单独设置滚动条样式,你可以使用​​@-moz-document​​规则。这个规则允许你为特定的浏览器或浏览器引擎应用样式。 下面是一个例子,演示如何在Firefox中隐藏滚动条: @-moz-document url-prefix() {/* 在这里添加只对Firefox生效的样式 */body {scrollbar-wi…

一文了解web开发基础知识【HTML、CSS、JavaScript】

文章目录 1 前言1.1 HTML1.2 CSS1.3 JavaScript1.4 理解HTML、CSS、JavaScript之间的关系 2 HTML2.1 什么是网页2.2 什么是HTML2.2.1 文本内容2.2.1.1 标题 2.2.2 图像2.2.3 链接2.2.4 列表2.2.5 表格2.2.6 HTML代码注释 2.3 第一个HTML文件2.3.1 示例2.3.2 补充2.3.2.1 < l…

苹果iPad通过Code APP应用实现SSH连接服务器远程进行开发

文章目录 1. 在iPad下载Code APP2.安装cpolar内网穿透2.1 cpolar 安装2.2 创建TCP隧道 3. iPad远程vscode4. 配置固定TCP端口地址4.1 保留固定TCP地址4.2 配置固定的TCP端口地址4.3 使用固定TCP地址远程vscode 本文主要介绍开源iPad应用IDE Code App 如何下载安装&#xff0c;并…

Linux-查看服务器--硬件配置信息

在Linux服务器上查看硬件配置信息&#xff0c;可以使用一系列命令行工具。以下是一些常用命令来获取不同硬件组件的详细信息&#xff1a; 查看CPU信息&#xff1a; cat /proc/cpuinfo&#xff1a;显示处理器类型、型号、频率、核心数等详细信息。lscpu&#xff1a;提供更为人性…

五个简单的C#编程案例

案例一&#xff1a;Hello, World! csharp using System; class Program { static void Main() { Console.WriteLine("Hello, World!"); } } 这个案例是最基础的C#程序&#xff0c;它打印出“Hello, World!”到控制台。每个C#程…

基于springboot + vue实现的前后端分离-酒店管理系统

项目介绍 基于springboot vue实现的酒店管理系统一共有酒店管理员和用户这两种角色。 管理员功能 登录&#xff1a;管理员可以通过登录功能进入系统&#xff0c;确保只有授权人员可以访问系统。用户管理&#xff1a;管理员可以添加、编辑和删除酒店的用户&#xff0c;包括前…