easyExcel设置最后一行的样式【可以拓展为每一行】
1、概要
本文主要是介绍表格最后一行的样式设置,可以根据本文内容,拓展成每一行的样式设置
2、需求介绍
原来的表格如下,现在简单的想把合计行加粗
3、实现
在Excel中,设置行的样式是通过WriteCellStyle对象来实现的,可以从上图得知,现在生成的表格,每一行的样式都是一致的,原来的样式代码如下:
// 表格的内容样式
WriteCellStyle bodyStyle = new WriteCellStyle();
// 字体样式
bodyStyle.setWriteFont(ExcelUtil.setFont(12, "Arial", false));
// 设置边框
// bodyStyle.setBorderTop(BorderStyle.DOUBLE);
bodyStyle.setBorderLeft(BorderStyle.THIN);
bodyStyle.setBorderRight(BorderStyle.THIN);
bodyStyle.setBorderBottom(BorderStyle.THIN);
//设置样式策略 headStyle是头部样式,这里我就不写出来了
HorizontalCellStyleStrategy dataTableStrategy = new HorizontalCellStyleStrategy(headStyle, bodyStyle);
setFont方法是我改造的文本样式方法,代码如下:
public class ExcelUtil{/*** @purpose 设置字体* @parameter name为null表示不设置字体*/public static WriteFont setFont(int size, String name, boolean condition) {WriteFont font = new WriteFont();// 大小font.setFontHeightInPoints((short) size);// 字体if (!ObjectUtils.isEmpty(name)) {font.setFontName(name);}// 是否加粗font.setBold(condition);return font;}}
改造开始:
首先来看看Excel的 HorizontalCellStyleStrategy策略的源码吧,看了你就知道easyExcel是怎么去实现每一行的样式了,源码如下:
来看看我之前样式实现时,调用HorizontalCellStyleStrategy的构造方法是什么?
public HorizontalCellStyleStrategy(WriteCellStyle headWriteCellStyle, WriteCellStyle contentWriteCellStyle) {this.headWriteCellStyle = headWriteCellStyle;if (contentWriteCellStyle != null) {this.contentWriteCellStyleList = ListUtils.newArrayList(contentWriteCellStyle);}}
看看源码中的if语句中的代码:
this.contentWriteCellStyleList = ListUtils.newArrayList(contentWriteCellStyle);
这就是为什么我使用这句代码时,每一行的样式都是一致的了:
new HorizontalCellStyleStrategy(headStyle, bodyStyle);
重点1:
easyExcel会把我设置的表格样式bodyStyle进行遍历复制!生成一个list,从而实现每一行的样式效果
重点2:
HorizontalCellStyleStrategy还有一个构造方法,支持直接传入一个样式集合 List<WriteCellStyle> ,从而给每一行设置样式!
public HorizontalCellStyleStrategy(WriteCellStyle headWriteCellStyle,List<WriteCellStyle> contentWriteCellStyleList) {this.headWriteCellStyle = headWriteCellStyle;this.contentWriteCellStyleList = contentWriteCellStyleList;}
是不是有思路了?来实现吧
代码改造:
//表格的内容样式
WriteCellStyle bodyStyle = new WriteCellStyle();
// 字体样式
bodyStyle.setWriteFont(ExcelUtil.setFont(12, "Arial", false));
// 设置边框
// bodyStyle.setBorderTop(BorderStyle.DOUBLE);
bodyStyle.setBorderLeft(BorderStyle.THIN);
bodyStyle.setBorderRight(BorderStyle.THIN);
bodyStyle.setBorderBottom(BorderStyle.THIN);// 1>创建最后一行的样式
WriteCellStyle lastRow = new WriteCellStyle();
// 2>设置加粗,其他样式保持一致
lastRow.setWriteFont(ExcelUtil.setFont(12, "Arial", true));
lastRow.setBorderLeft(BorderStyle.THIN);
lastRow.setBorderRight(BorderStyle.THIN);
lastRow.setBorderBottom(BorderStyle.THIN);
// 3>根据总行数],叠加生成最后一行的样式List
List<WriteCellStyle> preList = new ArrayList<>();
// 4>data是生成的表格数据集合,data.size()-1表示除最后一行的行数量
for (int i = 0; i < data.size()- 1; i++) {preList.add(bodyStyle);
}
// 5>添加最后一行的样式
preList.add(lastRow);
// 6>创建策略,headStyle是头部样式,这里我就不写出来了
HorizontalCellStyleStrategy dataTableStrategy = new HorizontalCellStyleStrategy(headStyle, preList);
效果:
最后一行加粗啦!
4、拓展思路
本文只是设置了最后一行的样式,在实际开发中,我们可以要对每一行的样式进行自定义设置,当然,实际工作中,假如有20行,不可能每一行都设置不同的颜色吧,一般都是奇数行一个样式,偶数行一个样式!做法跟我上述的代码相似,只需要判断是否为奇(偶)数标识,生成list样式集合即可!
GitEE地址:仓库 - C﹏T (ct668) - Gitee.comhttps://gitee.com/ct668/dashboard/projects?sort=&scope=&state=public
easyExcel设置最后一行的样式【可以拓展为每一行】相关推荐
- easyExcel设置单个单元格(颜色)样式
背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相关的单个单元格样式设置的资料比较少,有的还源码不全,只能说用 ...
- EasyExcel设置表格样式
工具类 package com.alibaba.excel.write.style;import java.util.List;import com.alibaba.excel.metadata.da ...
- EasyExcel设置特定单个单元格(颜色)样式
原文链接出自:easyExcel设置单个单元格(颜色)样式 背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相 ...
- 总结Python设置Excel单元格样式的一切,比官方文档还详细。
Python对Excel表格处理非常方便,本文专门对Excel单元格样式设置进行总结,日常用到的设置基本都可以用openpyxl库完成. 创建一个表格 openpyxl是第三方库,如果你还没有安装,输 ...
- 总结Python设置Excel单元格样式的一切,比官方文档还详细
总结Python设置Excel单元格样式的一切,比官方文档还详细 Python对Excel表格处理非常方便,本文专门对Excel单元格样式设置进行总结,日常用到的设置基本都可以用openpyxl库完成 ...
- hssfrow 单元格样式_POI设置Excel单元格样式
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...
- EasyExcel设置空单元格格式为文本
EasyExcel设置空单元格格式为文本 导语 解决方式 实现效果 导语 本文是解决空白表格设置格式为文本并不需要表格中有内容,适合导出编写模版的需求.我在网上找了一圈也没具体的解决方案,有很多只能修 ...
- BPM实例分享:如何设置表单字体样式
系统版本:V10.0 一些业务场景中,时尔需要改变表单字体 那如何设置表单字体样式? 本文将会针对全局表单和单个表单进行阐述! 1.全局表单: 修改WFRES\CSS\MvcSheet.css , ...
- 【RecyclerView】 九、为 RecyclerView 设置不同的布局样式
文章目录 一.为 RecyclerView 设置不同的布局样式 二.完整代码 三.RecyclerView 相关资料 一.为 RecyclerView 设置不同的布局样式 为 RecyclerView ...
最新文章
- 用 Python 画自画像?看完我笑了
- java实验四云南大学_云南大学JAVA程序设计实验四
- 寻找数组中第二大或第二小的数值
- oracle 10046详解
- SharePoint 2013 InfoPath 无法保存下列表单
- php版本最低要求:5.4_Zabbix 5.0.0beta1版本初体验
- Mac清理软件为苹果系统迅速减压
- RabbitMq(十三)消息发送确认与回调机制
- android多个activity绑定一个service,8.1.2 绑定Activity和Service
- Java并发编程-线程的状态
- 简化java_Java泛型太复杂了?如何简化?
- oracle服务器配置及优化
- 查看linq的生成语句
- protel中单位换算!mil=?mm!走线的粗细
- Beer Bill(签到题)
- YOLOV5 Detetct.py 流程分析
- iphone手机投射到电脑的过程详解
- android 视频剪辑工具,视频剪辑工具手机版
- AN INTRODUCTION TO MOOS
- css3上箭头怎么写,纯css作箭头
热门文章
- cp2102 vcp驱动
- IOS app蓝牙连接硬件设备 自动断开问题
- mysql 错误 #2054 解决方案
- 微信蓝牙设备服务器,微信又更新了 支持连接蓝牙设备
- iOS 几种常用的 crash log 崩溃信息调试方法. (转载)
- java后端和web_从java和web角度分析前端好还是后端好
- 【企业微信急速救心丸】(一)第三方应用开发 - Java整合企业微信回调
- 【数据增强】用cv2旋转图像并自定义填充背景颜色(主要用到cv2.getRotationMatrix2D 和 cv2.warpAffine)
- java提示程序包不存在,解决:Error:java xxxx 程序包不存在
- ZZULIoj-1088: 手机短号 (多实例)