Java通过cellstyle属性设置Excel单元格常用样式全面总结
最近做了一个导出Excel的功能,导出是个常规导出,但是拿来模板一看,有一些单元格的样式设置,包括合并,背景色,字体等等,毕竟不是常用的东西,需要查阅资料完成,但是搜遍全网没有一个全面的,工作完成后,我便总结了一下,能够应对日常开发使用的Excel样式设置属性。
这里重点总结生成Excel中对单元格的样式设置,不讲解如何导出Excel,基本导出很容易。
直接上代码,按照注释来看依次是:
首先创建一个工作薄
下面所有的操作都是对这个style对象来设置的。
// 创建excel工作簿SXSSFWorkbook wb = new SXSSFWorkbook(getXSSFWorkbook(examPath), 1000);//获取样式CellStyle style = wb.createCellStyle();
1.设置单元格对齐,属性使用参照注解
//1、先设置单元格对齐方式//水平对齐,一般对齐方式。文本数据左对齐。数字、日期和时间是正确对齐的。布尔类型居中。style.setAlignment(HorizontalAlignment.GENERAL);//靠左style.setAlignment(HorizontalAlignment.LEFT);
// 靠右style.setAlignment(HorizontalAlignment.RIGHT);
// 居中style.setAlignment(HorizontalAlignment.CENTER);
// 填充单元格的值,跨越单元格的整个宽度style.setAlignment(HorizontalAlignment.FILL);
// 水平对齐对齐(左右齐平)。对于每行文本,将单元格中换行文本的每行左右对齐style.setAlignment(HorizontalAlignment.JUSTIFY);
// 水平对齐在多个单元格中居中style.setAlignment(HorizontalAlignment.CENTER_SELECTION);//平铺。表示单元格中每行文本中的text均匀分布.跨越单元格的宽度,左右外边距齐平。style.setAlignment(HorizontalAlignment.DISTRIBUTED);
2.设置单元格垂直对齐,参考注解
//2.此枚举值指示单元格的垂直对齐类型,即://垂直居中对齐style.setVerticalAlignment(VerticalAlignment.CENTER);//顶部对齐style.setVerticalAlignment(VerticalAlignment.TOP);//底部对齐style.setVerticalAlignment(VerticalAlignment.BOTTOM);//对齐。style.setVerticalAlignment(VerticalAlignment.JUSTIFY);//分布。style.setVerticalAlignment(VerticalAlignment.DISTRIBUTED);
3.设置背景色
//3.设置背景色style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());//必须设置 否则背景色不生效style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
背景色的IndexedColors类中属性对应的具体颜色如下所示:
(1)枚举值对应的颜色
(2)色卡名称对应的颜色
GREY_80_PERCENT
INDIGO
PLUM
BROWN
OLIVE_GREEN
DARK_GREEN
SEA_GREEN
DARK_TEAL
GREY_40_PERCENT
BLUE_GREY
ORANGE
LIGHT_ORANGE
GOLD
LIME
AQUA
LIGHT_BLUE
TAN
LAVENDER
ROSE
PALE_BLUE
LIGHT_YELLOW
LIGHT_GREEN
LIGHT_TURQUOISE
SKY_BLUE
BLUE
DARK_RED
VIOLET
TURQUOISE
YELLOW
PINK
DARK_BLUE
LIGHT_CORNFLOWER_BLUE
ROYAL_BLUE
CORAL
ORCHID
LIGHT_TURQUOISE
LEMON_CHIFFON
PLUM
CORNFLOWER_BLUE
GREY_50_PERCENT
GREY_25_PERCENT
TEAL
VIOLET
DARK_YELLOW
DARK_BLUE
GREEN
DARK_RED
TURQUOISE
PINK
YELLOW
BLUE
BRIGHT_GREEN
RED
WHITE
BLACK
4.设置字体有关样式
基本涵盖了Excel中对文字常用的操作行为
//4.设置字体样式Font titleFont = wb.createFont();
// 设置字体的名称(例如Arial)titleFont.setFontName("宋体");
// 以1/20点为单位设置字体高度。titleFont.setFontHeight((short) 10);
// 设置是否使用斜体titleFont.setItalic(true);
// 设置是否在文本中使用删除线横线titleFont.setStrikeout(true);//颜色设置titleFont.setColor((short) 111);
// 设置普通、上标或下标。titleFont.setTypeOffset((short) 5);//下划线titleFont.setUnderline((byte) 0000);
// 是否加粗titleFont.setBold(true);
// 设置字体高度titleFont.setFontHeightInPoints((short) 12);style.setFont(titleFont);
5.边框设置
//5.边框设置style.setBorderBottom(BorderStyle.THIN);style.setBorderLeft(BorderStyle.THIN);style.setBorderTop(BorderStyle.THIN);style.setBorderRight(BorderStyle.THIN);
6.单元格合并操作
合并单元格使用的是CellRangeAddress函数,该函数源码在下面,可以清晰看到输入参数代表什么怎么用,简单解释一下就是
X:起始行 Y:结束行 a:起始列 b:结束列
这样就清晰的画出了一个合并范围。
// 6.合并单元格SXSSFSheet sheet = wb.createSheet("测试sheet");sheet.addMergedRegion(new CellRangeAddress(X, Y, a, b));
//设置单元格宽度 ,X代表第几列sheet.setColumnWidth(X, 20 * 260);
public CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) {super(firstRow, lastRow, firstCol, lastCol);if (lastRow < firstRow || lastCol < firstCol) {throw new IllegalArgumentException("Invalid cell range, having lastRow < firstRow || lastCol < firstCol, " +"had rows " + lastRow + " >= " + firstRow + " or cells " + lastCol + " >= " + firstCol);}}
工作之余总结一下,也是方便自己日后使用,有不对的地方欢迎指正。
相关文章:

Java通过cellstyle属性设置Excel单元格常用样式全面总结
最近做了一个导出Excel的功能,导出是个常规导出,但是拿来模板一看,有一些单元格的样式设置,包括合并,背景色,字体等等,毕竟不是常用的东西,需要查阅资料完成,但是搜遍全网…...

如何查看WiFi密码
本文分享一下手机和电脑上如何查看已经连接过的WiFi的密码,然后好分享给他人。 手机上分享wifi密码很简单,步骤如下: 生成二维码,读取WiFi密码 1、首先,在“设置”中找到“无线网络”,点击需要查找密码的Wi…...

2023NOIP A层联测22 总结
T1 简单分析了性质,发现可以用双指针求值,后面又发现可以用类似于线段树求最大子段和的方式维护。用时 40min T2 是期望,想了 30min 没有思路,于是打暴力,但是打的时候没有想清楚,就打了很久,大…...

HTTPS的加密方式超详细解读
在了解https的加密方式之前,我们需要先行了解两个特别经典的传统加密方式: 1、对称加密 1.1、定义 需要对加密和解密使用相同密钥的加密算法。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解…...

自定义SpringMVC拦截器,实现内外网访问控制功能
这篇文章简单介绍如何自定义一个SpringMVC拦截器,并通过拦截器实现具体的功能。 首先,需要创建一个自定义的拦截器类,该类实现HandlerInterceptor接口。 package cn.edu.sgu.www.mhxysy.interceptor;import cn.edu.sgu.www.mhxysy.feign.Fei…...

在pycharm中配置GPU训练环境(Anaconda)(yolov5)
目录 1. 具体的配置过程: 2. 在指定位置(路径)创建虚拟环境: 3. conda常用命令: 4: 在跑模型时候遇到的一些问题: 4.1: conda添加python解释器找不到对应的python.exe文件 4.2: 报错“OSError: [WinErr…...

【LeetCode刷题-链表】--146.LRU缓存
146.LRU缓存 方法一:哈希表双向链表 使用一个哈希表和一个双向链表维护所有在缓存中的键值对 双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久使用的哈希表即为普通的哈希映射࿰…...

mysql 问题解答
01 Mysql有哪些数据类型 MySQL支持多种数据类型,这些类型可以分为几个大的类别:数值类型、日期和时间类型、字符串(字符和字节)类型、空间类型、JSON类型。下面是每种类型的简要说明和用途,以及示例。 数值类型 整型: TINYINT:非常小的整数,如性别标识(0代表女性,1代…...

组件与Props:React中构建可复用UI的基石
目录 组件:构建现代UI的基本单位 Props:组件之间的数据传递 Props的灵活性:构建可配置的组件 组件间的通信:通过回调函数传递数据 总结: 组件:构建现代UI的基本单位 组件是前端开发中的关键概念之一。…...

接口框架第二篇—unittest/pytest 有什么区别
1.用例编写方法 unittest 1)测试文件必须导入unittest包 2)测试类必须继承unittest.TestCase 3)测试类必须有unittest.main()方法 4)测试方法必须要以test_打头 pytest 1)测试文件名要以test_打头,或…...

Window 7 / 10 / 11 .bat .cmd 中文路径不识别解决方案
一般都是编码问题 我们在批处理的第一行加入: chcp 65001 进行转为UTF-8 编码就可以实现中文路径识别...

Linux命令(113)之rev
linux命令之rev 1.rev介绍 linux命令rev是将文件中的每行内容已字符为单位反向输出,即第一个字符最后输出,最后一个字符最先输出 2.rev用法 rev [参数] filename rev参数 参数说明-V显示版本信息-h显示帮助信息 3.实例 3.1.显示rev的版本信息 命令…...

QT+SQLite数据库配置和使用
一、简介 1.1 SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt自带驱动)。 二、下载和配置 2.1 SQLite下载…...

若依分离版——配置多数据源(mysql和oracle),实现一个方法操作多个数据源
目录 一、若依平台配置 二、编写oracle数据库访问的各类文件 三. 一个方法操作多个数据源 一、若依平台配置 1、在ruoyi-admin的pom.xml添加依赖 <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version…...

Seata入门系列【19】分布式事务之CAP、BASE理论
1 CAP理论 CAP是以下三个词语的缩写: Consistency:一致性Availability:可用性Partition tolerance:分区容忍性 CAP理论的基础概念就是在分布式系统中,无法同时满足以上三点。 下面我们以一个简单的分布式系统&…...

界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘
DevExpress WPF Gauge(仪表)控件包含了多种圆形仪表类型、水平和垂直线性仪表、分段和矩阵数字仪表以及状态指示器,同时还具有最终用户交互性的集成支持。 P.S:DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至…...

算法题:870. 优势洗牌
该算法是临时想出来的,Java代码的实现在时间上不占优,之后有时间要优化一下,目前就是给大家提供一下思路。 解题思路:田忌赛马的思想 贪心法。 Step1. 对两个数组进行排序。 Step2. 同时遍历排序后的nums2和nums1,将…...

[架构之路-252/创业之路-83]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业应用信息系统集成
目录 第一章 什么是企业应用信息系统集成What 1.1 简介 1.2 架构 二、为什么需要企业应用信息系统集成Why 三、如何实现企业应用信息系统集成 3.1 步骤 3.2 企业应用集成的层次 3.3 业务流程重组 第一章 什么是企业应用信息系统集成What 1.1 简介 企业应用信息系统集…...

MFC发送http https以及json解析
域名解析成IP char szWeb[128] "www.baidu.com";struct hostent *pHost NULL;pHost gethostbyname(szWeb);//完成主机名到域名的解析char *IP inet_ntoa(*((struct in_addr *)pHost->h_addr));CString ipStr IP;请求三部曲: 1、CInternetSession…...

UE5加载websocket模块为空
今天测试UE 发现工程启动不了,后来看到原来是websocket模块无法加载。 解决的它的方法很简单,这种问题一般会出现在源码版本的引擎或者是停电了,导致UElaunch版本损坏,解决方法是来到源码版本的引擎 这个目录下: D:\…...

学习 Python 数据可视化,如何快速入门?
Python 是一种非常流行的编程语言,具有简单易学、高效、丰富的库和工具等特点。其中,数据可视化是 Python 的一个重要应用领域,可以帮助人们更好地理解和分析数据。本文将介绍如何快速入门 Python 数据可视化,以及常用的可视化工具…...

XUbuntu22.04之simplenote支持的Markdown语法总结(一百九十一)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

JAVA深化篇_26——Apache commons-io工具包的使用
Apache commons-io工具包的使用 Apache基金会介绍 Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软…...

centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置
目录 1.kfaka安装篇 1.1 安装jdk 1.2安装kafka 2.安全篇 2.1 kafka安全涉及3部份: 2.2 Kafka权限控制认证方式 2.3 SASL/SCRAM-SHA-256 配置实例 2.3.1 创建用户 2.3.2 创建 JAAS 文件及配置 3.测试 3.1 创建测试用户 3.2 配置JAAS 文件 3.2.1 生产者配…...

TrafficWatch 数据包嗅探器工具
TrafficWatch 是一种数据包嗅探器工具,允许您监视和分析 PCAP 文件中的网络流量。它提供了对各种网络协议的深入了解,并可以帮助进行网络故障排除、安全分析等。 针对 ARP、ICMP、TCP、UDP、DNS、DHCP、HTTP、SNMP、LLMNR 和 NetBIOS 的特定于协议的数据…...

MySQL Binlog实战应用之一
一、前言 开发业务系统尤其是与财务相关的系统,需要记录每一笔变更操作的日志,这一般有两种实现方案。 1、代码中通过AOP实现,提供注解跟踪记录日志,这种方案能够比较清晰地以业务角度记录操作日志,但记录变更前的旧…...

【MySQL】MVCC机制(undo log,read view)
文章目录 前言一. 预备知识二. 模拟MVCC三. Read View四. RC与RR的本质区别结束语 前言 MVCC(多版本并发控制)是一种用来解决读-写冲突的无锁并发控制 MVCC为事务分配单向增长的事务ID,为每个修改保存一个版本,版本与事物ID相关联…...

gma 2 教程(三)坐标参考系统:3.投影方法
安装 gma:pip install gma 地图投影是利用一定数学法则把地球表面的经、纬线转换到平面上的理论和方法。由于地球是一个赤道略宽两极略扁的不规则的梨形球体,故其表面是一个不可展平的曲面,所以运用任何数学方法进行这种转换都会产生误差和变…...

蓝桥杯每日一题2023.11.2
题目描述 等差素数列 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题我们需要求出最小的公差并且长度为10, 1.确保序列开始为素数 2.确定枚举的个数 注意:序列中数只是d的变化,可以通过此计算将开始数字后9个数字都计算出来,d是…...

Leetcode67二进制求和
1104 代码: class Solution {public String addBinary(String a, String b) {StringBuffer ans new StringBuffer();int n Math.max(a.length(),b.length()),carry 0;for(int i0;i<n;i){carry i < a.length()?(a.charAt(a.length()-1-i)-0):0;carry i…...