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

使用的excel 版本:


	com.alibaba
	easyexcel
	3.3.2

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

你可能感兴趣的:(java,excel)