最终效果图

代码:

public class Test {public static void main(String[] args) throws IOException, IllegalAccessException, ParseException {ArrayList<People> dataList = new ArrayList<>();List<String> ss=new ArrayList<>();for (int i = 0; i < 20; i++) {ss.add(i+"");}for (int i = 0; i < 5; i++) {People people = new People("姓名" + i, i + "", "男", "12345678911","1","2",ss);dataList.add(people);doExceloneThread(dataList);}}public static void doExceloneThread(ArrayList<People> dataList) throws IllegalAccessException, IOException, ParseException {//创建一个工作薄SXSSFWorkbook workbook = new SXSSFWorkbook();//创建一个sheetSXSSFSheet sheet = (SXSSFSheet) workbook.createSheet();//设置sheet页长度限制sheet.setRandomAccessWindowSize(-1);//-------------------------------------------------------//表中要几种样式,或几种字体,提前创建好,设置单元格的时候就可以直接设置了//创建样式CellStyle cellStyle = workbook.createCellStyle();//水平居中cellStyle.setAlignment(HorizontalAlignment.CENTER);//上下居中cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//设置字体Font font = workbook.createFont();font.setFontName("黑体");font.setFontHeightInPoints((short) 10); //字体大小//将字体设置放入样式中cellStyle.setFont(font);//创建第一行.后面需要合并某些单元格Row row0 = sheet.createRow(0);Cell cell0 = row0.createCell(0);cell0.setCellValue("姓名");cell0.setCellStyle(cellStyle);Cell cell1 = row0.createCell(1);cell1.setCellValue("所在部门");cell1.setCellStyle(cellStyle);Cell cell2 = row0.createCell(2);cell2.setCellValue("应到天数");cell2.setCellStyle(cellStyle);Cell cell3 = row0.createCell(3);cell3.setCellValue("出勤天数");cell3.setCellStyle(cellStyle);Cell cell4 = row0.createCell(4);cell4.setCellValue("请假天数");cell4.setCellStyle(cellStyle);Cell cell5 = row0.createCell(5);cell5.setCellValue("迟到天数");cell5.setCellStyle(cellStyle);//第二行Row row1 = sheet.createRow(1);List<String> cellFirst= DateUtils.getAllDate("2022-06-01","2022-06-10");List<String> cellFirsts=new ArrayList<>();for (int i=0;i<cellFirst.size();i++){String date=cellFirst.get(i)+","+"  ";String[] ss=date.split(",");for (String s:ss){cellFirsts.add(s);}}for (int i = 0; i < cellFirsts.size(); i++) {row0.setHeight((short) 450);Cell cell6 = row0.createCell(i+6);cell6.setCellValue(cellFirsts.get(i));cell6.setCellStyle(cellStyle);Cell cell7 = row1.createCell(i+6);if (i%2==0){sheet.addMergedRegion(new CellRangeAddress(0, 0, i+6, i+6+1));cell7.setCellValue("上午");cell7.setCellStyle(cellStyle);}else{cell7.setCellValue("下午");cell7.setCellStyle(cellStyle);}}//-------------------------------------------//遍历集合中的数据//也可以采用自己的方法,总之就是将数据放到一个一个的cell(单元格)中,Iterator<People> iterator = dataList.iterator();
//            //反射Field[] fields = People.class.getDeclaredFields();int ss=fields.length-1+dataList.get(0).getSs().size();Integer currentRow = 2;String good=null;int k=0;CellStyle cellStyle2 = workbook.createCellStyle();for (int i=0;i<dataList.size();i++){k=0;People people=iterator.next();Row row = sheet.createRow(currentRow);for (int j=0;j<ss;j++){Cell cell = row.createCell(j);if (j>=6){if (k<dataList.get(i).getSs().size()){good=dataList.get(i).getSs().get(k);System.out.println("我的值"+dataList.get(i).getSs().get(k));cell.setCellValue(String.valueOf(good));k++;}}else{cell.setCellValue(String.valueOf(fields[j].get(people)));}cell.setCellStyle(cellStyle2);}currentRow++;}//合并单元格的方法//sheet.addMergedRegion(new CellRangeAddress(起始行号, 结束行号, 其实列号, 结束列号));sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3));sheet.addMergedRegion(new CellRangeAddress(0, 1, 4, 4));sheet.addMergedRegion(new CellRangeAddress(0, 1, 5, 5));//冻结第一行
//            sheet.createFreezePane(0,1,0,1);//设置列宽,参数1:列号  参数2:宽度值sheet.setColumnWidth(0,3000);sheet.setColumnWidth(1,3000);sheet.setColumnWidth(2,3000);sheet.setColumnWidth(3,5000);//输出文件FileOutputStream fileOutputStream = new FileOutputStream(new File("E:\\test.xlsx"));workbook.write(fileOutputStream);}
}

自定义Excle表头相关推荐

  1. vue项目导出自定义多级表头表格

    基于Vue项目实现自定义多表头表格导出 本方法在export2Excel.js文件里面改动较少,适用性较强 安装依赖: npm install -S file-saver npm install -S ...

  2. ASPxGridViewHelper自定义多表头及合并单元格

    举例1:自定义多表头,合并单元格 AspxGridview protected void Page_Load(object sender, EventArgs e){InitGrid();InitGr ...

  3. element-ui利用jsx语法自定义table表头

    element-ui利用jsx语法自定义table表头 1. 需求 需要自定义如下表头 2. table表头 这里说一下render-header属性,这是官网给出的解释 这是我的表头 3. jsx自 ...

  4. elementui表格中tip设置_Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用...

    {column}) { return h( 'div',// 添加选中事件select (data) { console.log(data);}... 效果如下: 3.在表头添加一个Tooltip 我 ...

  5. easyExcel自定义背景颜色easyPoi自定义修改表头背景色

    背景:Excel自定义背景颜色,自定义表头背景颜色 注意点:单元格设置背景颜色失效原因/不生效的原因,通常是因为只设置了setFillForegroundColor 参数,这样肯定是不行的,还需要再设 ...

  6. el-table动态添加行,列。自定义输入表头,input hover 显示文字

    功能点: 1,动态添加行 2,动态添加列 3,右键表头删除列 4,右键表体删除行 5,表格hover提示当前单元格文字,自动换行 6,表头文字自定义 7,表头,添加按钮固定,表体自适应滚动 效果图: ...

  7. antd table动态表头_使用 antd@4 table 自定义筛选表头功能做一个联动搜索表头筛选...

    前言: 上篇文章是使用 antd@4 table 自定义表头筛选完成一个表格动态列的功能,这次需要完成一个表头联动条件筛选功能. 一.开始前 开始之前先去 Antd 官网看下「自定义的列筛选功能」的代 ...

  8. 18.自定义过滤器表头排序

    效果图: 排序了姓名: 排序了年龄: 1 <!DOCTYPE html>2 <html ng-app="myApp" ng-controller="my ...

  9. vue element-ui自定义表头,动态添加表头,新增行、新增列、删除行、删除列

    vue element-ui表格怎样自定义表头,动态添加表头,新增行.新增列.删除行.删除列 需求描述 1.自定义表头,表头里插入输入框 2.默认初始化几行几列占位 3.新增行 4.新增列 5.右键点 ...

最新文章

  1. mysql本周函数_MySQL的YEARWEEK函数以及查询本周数据_MySQL
  2. 【渝粤题库】广东开放大学 秘书理论与实务 形成性考核
  3. Docker 安装 Redis (Redis 配置)
  4. 【今日CS 视觉论文速览】14 Dec 2018
  5. visual studio哪一款比较好用_时下比较流行的7种家居装修风格,你钟爱哪一款?...
  6. linux纯文字界面,Linux入门 Part1: 使用控制台(1)-纯文本界面
  7. linux 下搭建自己的 git 服务器以及配置多用户
  8. 主表和附表的关联关系,普通字段就可以实现为什么还要有主键外键?之间有什么关系
  9. 刮刮卡 java代码_Android刮刮卡效果实现代码
  10. SAP -Posting only Possible in Periods YYYY/MM YYYY/MM in company 1000
  11. GoogleEarth二次开发平台指南(1) ---如何将谷歌地球嵌入到自定义的窗体中
  12. 298本R语言书籍免费送!!!
  13. C. Equalize(贪心)
  14. mpvue,koa开发微信小程序(一)配置相关
  15. .Net加密与解密——非对称加密之数字签名
  16. java oracle中文乱码_java字符编码和oracle乱码
  17. Mask rcnn 代码复现
  18. 【leetcode热题100】刷题记录(5-8)
  19. linux函数实现rm
  20. 四川大学计算机学院保研复试,四川大学计算机学院计算机技术(专业学位)保研...

热门文章

  1. 力扣第257周赛T4数组的最大公因数排序(并查集+质因数分解)
  2. 风云网络工作室-专业的wow代练工作室http://ahhujing.go.nease.net
  3. 经典案例:单例模式之懒汉式和饿汉式
  4. MySQL的几种数据库引擎介绍
  5. PHP爬虫音乐缓存,爬取网易云音乐热评[附上音乐下载]
  6. 重装系统重新分区方法教程
  7. dhl:AjaxPro的使用后感
  8. 切勿临渴再掘井,还需未雨先绸缪
  9. jmplayer苹果app怎么用_GoodPlayerapp_GoodPlayer苹果版下载安装-第一电竞网
  10. multiple commands produce