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设置最后一行的样式【可以拓展为每一行】相关推荐

  1. easyExcel设置单个单元格(颜色)样式

    背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相关的单个单元格样式设置的资料比较少,有的还源码不全,只能说用 ...

  2. EasyExcel设置表格样式

    工具类 package com.alibaba.excel.write.style;import java.util.List;import com.alibaba.excel.metadata.da ...

  3. EasyExcel设置特定单个单元格(颜色)样式

    原文链接出自:easyExcel设置单个单元格(颜色)样式 背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相 ...

  4. 总结Python设置Excel单元格样式的一切,比官方文档还详细。

    Python对Excel表格处理非常方便,本文专门对Excel单元格样式设置进行总结,日常用到的设置基本都可以用openpyxl库完成. 创建一个表格 openpyxl是第三方库,如果你还没有安装,输 ...

  5. 总结Python设置Excel单元格样式的一切,比官方文档还详细

    总结Python设置Excel单元格样式的一切,比官方文档还详细 Python对Excel表格处理非常方便,本文专门对Excel单元格样式设置进行总结,日常用到的设置基本都可以用openpyxl库完成 ...

  6. hssfrow 单元格样式_POI设置Excel单元格样式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...

  7. EasyExcel设置空单元格格式为文本

    EasyExcel设置空单元格格式为文本 导语 解决方式 实现效果 导语 本文是解决空白表格设置格式为文本并不需要表格中有内容,适合导出编写模版的需求.我在网上找了一圈也没具体的解决方案,有很多只能修 ...

  8. BPM实例分享:如何设置表单字体样式

    系统版本:V10.0 一些业务场景中,时尔需要改变表单字体 那如何设置表单字体样式? 本文将会针对全局表单和单个表单进行阐述! 1.全局表单:   修改WFRES\CSS\MvcSheet.css , ...

  9. 【RecyclerView】 九、为 RecyclerView 设置不同的布局样式

    文章目录 一.为 RecyclerView 设置不同的布局样式 二.完整代码 三.RecyclerView 相关资料 一.为 RecyclerView 设置不同的布局样式 为 RecyclerView ...

最新文章

  1. 用 Python 画自画像?看完我笑了
  2. java实验四云南大学_云南大学JAVA程序设计实验四
  3. 寻找数组中第二大或第二小的数值
  4. oracle 10046详解
  5. SharePoint 2013 InfoPath 无法保存下列表单
  6. php版本最低要求:5.4_Zabbix 5.0.0beta1版本初体验
  7. Mac清理软件为苹果系统迅速减压
  8. RabbitMq(十三)消息发送确认与回调机制
  9. android多个activity绑定一个service,8.1.2 绑定Activity和Service
  10. Java并发编程-线程的状态
  11. 简化java_Java泛型太复杂了?如何简化?
  12. oracle服务器配置及优化
  13. 查看linq的生成语句
  14. protel中单位换算!mil=?mm!走线的粗细
  15. Beer Bill(签到题)
  16. YOLOV5 Detetct.py 流程分析
  17. iphone手机投射到电脑的过程详解
  18. android 视频剪辑工具,视频剪辑工具手机版
  19. AN INTRODUCTION TO MOOS
  20. css3上箭头怎么写,纯css作箭头

热门文章

  1. cp2102 vcp驱动
  2. IOS app蓝牙连接硬件设备 自动断开问题
  3. mysql 错误 #2054 解决方案
  4. 微信蓝牙设备服务器,微信又更新了 支持连接蓝牙设备
  5. iOS 几种常用的 crash log 崩溃信息调试方法. (转载)
  6. java后端和web_从java和web角度分析前端好还是后端好
  7. 【企业微信急速救心丸】(一)第三方应用开发 - Java整合企业微信回调
  8. 【数据增强】用cv2旋转图像并自定义填充背景颜色(主要用到cv2.getRotationMatrix2D 和 cv2.warpAffine)
  9. java提示程序包不存在,解决:Error:java xxxx 程序包不存在
  10. ZZULIoj-1088: 手机短号 (多实例)