利用POI生成带表头的Excel

您所在的位置:网站首页 电子表格如何自动生成表头 利用POI生成带表头的Excel

利用POI生成带表头的Excel

2024-07-05 16:52| 来源: 网络整理| 查看: 265

1.关于Excel版本的一点了解

在项目工作中主要使用两个版本,03版文件名以“.xls”结尾,最大处理行数为65536,07版文件名以“.xlsx”结尾,最大处理行数为1048576。

2.关于Excel的相关概念

工作簿 工作表 行 单元格 在这里插入图片描述

3.POI版本使用3.11,创建maven工程方便导入jar包 org.apache.poi poi 3.11 org.apache.poi poi-ooxml 3.11 4.POI操作Excel工作簿的三个实现类(实现接口Workbook)

POI处理不同需求的Excel操作有不同的实现类,03版的xls对应HSSFWorkbook,07版的xlsx对应XSSFWorkbook,大数据量的写操作使用SXSSFWorkbook,大概的区别就是HSSFWorkbook读取的最大行数是65536,读写的速度相对较快,但存在弊端,不能写更多行的数据,这时候XSSFWorkbook登场,但是XSSFWorkbook采用一次性写出数据,如果数据量很大内存又不够,容易造成OOM异常,而SXSSFWorkbook使用了滑动窗口的概念,默认在内存中最多保留100行数据,超过100行的时候,就会把最小索引的行写入到临时文件中,这样就可以尽可能的避免出现OOM异常,大家根据实际需求选择相应的实现类。本次讲解使用HSSFWorkbook 在这里插入图片描述

5.HSSFWorkbook常用类与Excel对象的对应关系

HSSFWorkbook 工作簿对象 HSSFSheet 工作表对象 HSSFRow 行对象 HSSFCell 单元格对象 HSSFCellStyle 单元格样式对象 HSSFFont 字体对象

6.生成没有单元格边框的表头

在Excel里面默认的边框线是灰色的,生成没有边框线的单元格的逻辑就是想边框线的颜色改为白色,由于是演示代码,有些冗余代码没有提取出来,大家自行根据需求进行处理。

public static void setSheetHead() { // 文件路径,03版的文件名以.xls结尾,07版的文件名以.xlsx结尾 String filePath = "/Users/lavined/Desktop/test01.xls"; FileOutputStream os = null; // 最大列数 int cellNum = 10; int cellNumTemp = cellNum - 1; // 工作表名称 String sheetName = "学生信息表"; // 创建工作簿对象 Workbook workbook = new HSSFWorkbook(); // 创建工作表对象 Sheet sheet = workbook.createSheet(sheetName); // 设置列宽 sheet.setDefaultColumnWidth(13); // 设置单元格格式 CellStyle cellStyle = workbook.createCellStyle(); // 边框颜色白色 cellStyle.setTopBorderColor(IndexedColors.WHITE.getIndex()); cellStyle.setLeftBorderColor(IndexedColors.WHITE.getIndex()); cellStyle.setRightBorderColor(IndexedColors.WHITE.getIndex()); cellStyle.setBottomBorderColor(IndexedColors.WHITE.getIndex()); // 边框线型 cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框 // 由于采用无边框样式以后,最后一个单元格的右边框会消失,所以给最后一个单元格的下一个单元格设置样式 CellStyle leftCellStyle = workbook.createCellStyle(); leftCellStyle.setLeftBorderColor(IndexedColors.GREY_25_PERCENT.getIndex()); leftCellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 内容居中 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 设置字体 Font font = workbook.createFont(); font.setBold(true);// 粗体 font.setFontHeightInPoints((short) 14);// 设置字体大小 cellStyle.setFont(font); // 创建行对象 Row row = sheet.createRow(0); for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3