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必须设置为true
  		int 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);

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

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

相关文章

游戏服务器价格对比分析,2024高主频高性能服务器租用价格

游戏服务器租用多少钱一年?1个月游戏服务器费用多少?阿里云4核16G10M游戏服务器26元1个月、149元半年,腾讯云4核16G游戏服务器32元、312元一年,华为云26元,京东云主机也是26元起,游戏服务器配置从4核16G、4…

Linux学习方法-框架学习法——Linux驱动架构的演进

配套视频学习链接:https://www.bilibili.com/video/BV1HE411w7by?p4&vd_sourced488bc722b90657aaa06a1e8647eddfc 目录 Linux驱动演进的过程 Linux驱动的原始架构(Linux V2.4) 平台总线架构(platform) Linux设备树 Linux驱动演进的趋势 Linux驱动演进的过程…

最新攻略揭秘!多微信一键转发朋友圈,快速推广

现如今,微信朋友圈已然成为很多企业和个人的重要推广渠道之一。而如何快速推广朋友圈内容,吸引更多关注和转发,成为许多人关注的焦点。 今天就给大家分享一个可以实现一键转发朋友圈的工具——微信管理系统,帮助你快速提升内容曝…

#gStore-weekly | workbench功能详解之知识更新

gStore workbench作为gStore的可视化管理工具,不仅提供了可视化查询功能,还提供了可视化的知识更新功能,用户可以在可视化界面上进行知识的新增、修改和删除等操作,让我们的知识管理更加清晰和便捷。 1.查询知识 登录workbenc…

深信服技术认证“SCCA-C”划重点:深信服超融合HCI

为帮助大家更加系统化地学习云计算知识,高效通过云计算工程师认证,深信服特推出“SCCA-C认证备考秘笈”,共十期内容。“考试重点”内容框架,帮助大家快速get重点知识 划重点来啦 *点击图片放大展示 深信服云计算认证(S…

TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发

TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发 目录 TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发 一、TDesign Vue Next Starter中后台项目模板 1.1、项目…

​​​​​​​Sora:OpenAI的革命性AI视频模型与其对未来影像创作的影响

随着深度学习技术和计算能力的进步,人工智能不仅在图像识别、自然语言处理等领域取得了卓越成就,同时也在不断突破视频处理和生成的边界。在这一背景下,OpenAI推出了Sora——一种新型的AI视频模型,标志着AI在视频内容创作领域的又…

后端程序员入门react笔记(四)-综合运用,写一个小demo

样式模块化 有时候我们会遇到这样的问题,有两个css对一个class声明了样式,这样的话后引入的css会覆盖前面的css样式,导致样式冲突,那么我们怎么解决这种问题呢,我们可以使用样式的模块化,我们起名一个inde…

Shell好用的工具: cut

目标 使用cut可以切割提取指定列\字符\字节的数据 介绍 cut 译为“剪切, 切割” , 是一个强大文本处理工具,它可以将文本按列进行划分的文本处理。cut命令逐行读入文本,然后按列划分字段并进行提取、输出等操作。 语法 cut [options] filename opti…

Vue(学习笔记)

什么是Vue Vue是一套构建用户界面的渐进式框架 构建用户界面: 基于数据渲染出用户可以看到的界面 渐进式: 所谓渐进式就是循序渐进,不一定非得把Vue中的所有API都学完才能开发Vue,可以学一点开发一点 创建Vue实例 比如就上面…

java面向对象上:类的结构之一

目录 1.相同点 2.不同点 2.1 在类中声明的位置的不同 2.2 关于权限修饰符的不同 2.3 默认初始化值的情况: 2.4 在内存中加载的位置 补充:回顾变量的分类: 方式一:按照数据类型: 方式二:按照在类中…

01_02_mysql06_(视图-存储过程-函数(变量、流程控制与游标)-触发器)

视图 使用 视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格&#xff0…

第九节HarmonyOS 常用基础组件24-Navigation

1、描述 Navigation组件一般作为Page页面的根容器,通过属性设置来展示的标题栏、工具栏、导航栏等。 2、子组件 可以包含子组件,推荐与NavRouter组件搭配使用。 3、接口 Navigation() 4、属性 名称 参数类型 描述 title string|NavigationComm…

alibabacloud学习笔记06(小滴课堂)

讲Sentinel流量控制详细操作 基于并发线程进行限流配置实操 在浏览器打开快速刷新会报错 基于并发线程进行限流配置实操 讲解 微服务高可用利器Sentinel熔断降级规则 讲解服务调用常见的熔断状态和恢复 讲解服务调用熔断例子 我们写一个带异常的接口:

Win32 获取EXE/DLL文件版本信息

CFileVersion.h #pragma once#include <windows.h> #include <string> #include <tchar.h>#ifdef _UNICODE using _tstring std::wstring; #else using _tstring std::string; #endif// 版本号辅助类 class CVersionNumber { public:// 无参构造CVersionN…

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture06 Logistic回归

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture06 Logistic回归 课程网址 Pytorch深度学习实践 部分课件内容&#xff1a; import torchx_data torch.tensor([[1.0],[2.0],[3.0]]) y_data torch.tensor([[0.0],[0.0],[1.0]])class LogisticRegressionModel(…

PYTHON-使用正则表达式进行模式匹配

目录 Python 正则表达式Finding Patterns of Text Without Regular ExpressionsFinding Patterns of Text with Regular ExpressionsCreating Regex ObjectsMatching Regex ObjectsReview of Regular Expression MatchingMore Pattern Matching with Regular ExpressionsGroupi…

【数据结构】排序(2)

目录 一、快速排序&#xff1a; 1、hoare(霍尔)版本&#xff1a; 2、挖坑法&#xff1a; 3、前后指针法&#xff1a; 4、非递归实现快速排序&#xff1a; 二、归并排序&#xff1a; 1、递归实现归并排序&#xff1a; 2、非递归实现归并排序&#xff1a; 三、排序算法…

白酒:陈酿过程中的氧化还原反应与酒体老化

在云仓酒庄豪迈白酒的陈酿过程中&#xff0c;氧化还原反应与酒体老化是影响酒品质的重要因素。陈酿是白酒生产中不可或缺的一环&#xff0c;通过陈酿可以使酒体更加协调、口感更加醇厚。而氧化还原反应作为陈酿过程中的重要化学反应&#xff0c;对酒体的老化起着关键作用。 首先…

Python列表:灵活多变的数据结构

文章目录 一、列表1.创建列表2.访问列表元素3.修改列表元素4.添加元素5.删除元素 二、列表脚本操作符1.连接运算符 2.重复运算符 * 三、列表函数&方法1.函数1.1 len() 函数1.2 max() 函数1.3 min() 函数1.4 sum() 函数1.5 list() 函数 2.方法2.1 append() 方法2.2 extend()…