EasyExcel 生成excel 文件——复杂用法

本文介绍了如何使用EasyExcel的3.3.2版本进行Excel操作,包括合并单元格、移动行(xls格式)、创建行和列、冻结窗口以及设置单元格背景颜色。同时,提到了在不同格式中设置颜色的方法,并指出在WorkbookWriteHandler的afterWorkbookDispose方法中修改单元格样式可能出现的问题。
摘要由CSDN通过智能技术生成

使用的excel 版本:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>3.3.2</version>
</dependency>

1.合并单元格

Workbook workbook = writeWorkbookHolder.getWorkbook();//WriteWorkbookHolder writeWorkbookHolder
Sheet sheet = workbook.getSheetAt(0);
CellRangeAddress deptNameCellRegion = new CellRangeAddress(1,2,3,4);//合并(D2:E3)的区域
sheet.addMergedRegion(deptNameCellRegion);

2.移动行

注意: 我使用的这个版本的easyexcel 没有实现xlsx格式文件的移动行功能。该版本支持xls格式文件的移动行功能。因此在创建ExcelWriter的时候,要生命excelType为ExcelTypeEnum.XLS 格式(默认是ExcelTypeEnum.XLSX)

sheet.shiftRows(startRowNum, endRowNum, 1);//第(startRowNum+1)行到第(endRowNum+1)行向下移动一行
sheet.shiftRows(startRowNum, endRowNum, -1);//第(startRowNum+1)行到第(endRowNum+1)行向上移动一行

3.创建行、列

Row targetRow = sheet.createRow(rowNum);
Cell cell = targetRow.createCell(columnIndex);
targetCell.setCellValue("ab");

4.冻结窗口

sheet.createFreezePane(2, 0);//冻结前面2列

5.设置单元格背景颜色

(1)xlsx格式文件设置单元格背景色

CellStyle cellStyle = cell.getCellStyle();
XSSFColor showColor;
((XSSFCellStyle) cellStyle).setFillForegroundColor(showColor);
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//这一行一定要加,不然背景色显示不出来

附6位16进制rgb颜色转换成XSSFColor的代码:

String hexColor = "#7ce100";
int r = Integer.valueOf(hexColor.substring( 1, 3 ), 16);
int g = Integer.valueOf(hexColor.substring( 3, 5 ), 16);
int b = Integer.valueOf(hexColor.substring( 5, 7 ), 16);
java.awt.Color color = new java.awt.Color(r, g, b);
XSSFColor showColor = new XSSFColor(color);

(2)xls格式文件设置单元格背景色

CellStyle cellStyle = cell.getCellStyle();
HSSFColor hssf = null;
cellStyle.setFillForegroundColor(hssf.getIndex());

附6位16进制rgb颜色转换成HSSFColor的代码:

HSSFWorkbook wb;
String hexColor = "#7ce100";
int r = Integer.valueOf(hexColor.substring( 1, 3 ), 16);
int g = Integer.valueOf(hexColor.substring( 3, 5 ), 16);
int b = Integer.valueOf(hexColor.substring( 5, 7 ), 16);
HSSFColor hssf = palette.findSimilarColor(r, g, b);

6.其他

在WorkbookWriteHandler 的afterWorkbookDispose 方法中修改单元格的样式,所有没有专门设置或者在afterWorkbookDispose 中设置样式的单元格,都被渲染成一样的样式。我在easyexcel 的github issue中找到1个类似的案例,说是没有进行深拷贝导致的(https://github.com/alibaba/easyexcel/issues/3003)。推测我遇到的这个问题引起可能也是类似的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值