使用的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)。推测我遇到的这个问题引起可能也是类似的