Java使用Poi的一些基本操作(合并单元格、设置单元格背景色、设置单元格边框颜色、设置字体颜色、是否加粗等等)

近半年的开发中都在和导入导出打交道,涉及到导出那自然避免不了一些单元格的合并、设置单元格背景色、设置单元格边框颜色、设置字体颜色、字体是否加粗等问题。因此想要总结一下,也让以后遇到类此问题可以方便查看。下面我将一一用代码来展示。

一、设置单元格的列宽

// 首先需要new一个Workbook工作簿
Workbook workbook = new XSSFWorkbook();
// 然后用workbook创建一个Sheet
Sheet sheet = workbook.createSheet("三、区域整体完成情况");
// 设置单元格宽度(第一个参数代表列的位置,从0开始;第二个参数代表需要设置的宽度)
sheet.setColumnWidth(0,3500);
sheet.setColumnWidth(1,3500);
sheet.setColumnWidth(2,3500);

二、合并单元格

/*
 * 这个对象中有四个参数
 * 第一个代表:起始行
 * 第二个代表:结束行
 * 第三个代表:起始列
 * 第四个代表:结束列
 * 如下代码代表合并了第1行和第2行的第0列到第1列
 */
CellRangeAddress cra = new CellRangeAddress(1,2,0,1);
// 把合并样式添加到sheet中
sheet.addMergedRegion(cra);

效果如图:将红色框的四个单元格合并为一个单元格。
在这里插入图片描述
在这里插入图片描述

三、设置单元格背景色

// 创建一个工作簿
CellStyle style = workbook.createCellStyle();
// 设置背景色
style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
// 设置填充样式
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 设置cell样式
cell_1_0.setCellStyle(style);

这里的颜色可以选择多种,具体请参照该表:

色值 执行结果
HSSFColor.ROYAL_BLUE
HSSFColor.TEAL
HSSFColor.LIME
HSSFColor.PALE_BLUE
HSSFColor.AQUA
HSSFColor.GREEN
HSSFColor.TURQUOISE
HSSFColor.DARK_BLUE
HSSFColor.CORNFLOWER_BLUE
HSSFColor.OLIVE_GREEN
HSSFColor.WHITE
HSSFColor.LIGHT_TURQUOISE
HSSFColor.LEMON_CHIFFON
HSSFColor.LIGHT_GREEN
HSSFColor.BLUE
HSSFColor.DARK_RED
HSSFColor.CORAL
HSSFColor.RED
HSSFColor.LIGHT_YELLOW
HSSFColor.SKY_BLUE
HSSFColor.BROWN
HSSFColor.SEA_GREEN
HSSFColor.INDIGO
HSSFColor.MAROON
HSSFColor.GREY_80_PERCENT
HSSFColor.GREY_25_PERCENT
HSSFColor.DARK_GREEN
HSSFColor.YELLOW
HSSFColor.GOLD
HSSFColor.GREY_40_PERCENT
HSSFColor.DARK_TEAL
HSSFColor.PINK
HSSFColor.ORCHID
HSSFColor.LIGHT_BLUE
HSSFColor.LIGHT_CORNFLOWER_BLUE
HSSFColor.BLACK
HSSFColor.DARK_YELLOW
HSSFColor.VIOLET
HSSFColor.LAVENDER
HSSFColor.ROSE
HSSFColor.BLUE_GREY
HSSFColor.LIGHT_ORANGE
HSSFColor.ORANGE
HSSFColor.GREY_50_PERCENT

四、设置单元格边框颜色

设置边框包含两部分,边框的粗细以及颜色。且边框分为上下左右四个部分,需要分别设置。如下:

CellStyle style = workbook.createCellStyle();
// 设置下边框的线条粗细(有14种选择,可以根据需要在BorderStyle这个类中选取)
style.setBorderBottom(BorderStyle.THIN);
// 设置下边框的边框线颜色(颜色和上述的颜色对照表是一样的)
style.setBottomBorderColor(IndexedColors.SKY_BLUE.getIndex());
style.setBorderLeft(BorderStyle.THIN);//左边框
style.setLeftBorderColor(IndexedColors.SKY_BLUE.getIndex());
style.setBorderTop(BorderStyle.THIN); //上边框
style.setRightBorderColor(IndexedColors.SKY_BLUE.getIndex());
style.setBorderRight(BorderStyle.THIN);//右边框
style.setTopBorderColor(IndexedColors.SKY_BLUE.getIndex());
// 给单元格添加样式
cell_1_0.setCellStyle(style);

五、设置字体的样式(颜色、粗细)

CellStyle style = workbook.createCellStyle();
// 创建字体样式
Font font = workbook.createFont();
// true为加粗,默认为不加粗
font.setBold(true);
// 设置字体颜色,颜色和上述的颜色对照表是一样的
font.setColor(IndexedColors.WHITE.getIndex());
// 将字体样式设置到单元格样式中
style.setFont(font);
// 给单元格添加样式
cell_1_0.setCellStyle(style);

六、冻结单元格

/*
 * 冻结单元格有两个常用的方法
 * colSplit 表示要冻结的列数;
 * rowSplit 表示要冻结的行数;
 * leftmostColumn 表示右边区域[可见]的首列序号;
 * topRow 表示下边区域[可见]的首行序号;
 */
void createFreezePane(int colSplit, int rowSplit);
void createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow);

// 例如
// 冻结第一行
sheet.createFreezePane(0,1);
// 冻结第一列,冻结列右侧的第一列为B列
sheet.createFreezePane(1,0,1,0):
// 冻结左侧两列,冻结列右侧的第一列为F列
sheet.createFreezePane(2,0,5,0):
// 冻结第一行,冻结行下侧第一行的左边框显示“2”
sheet.createFreezePane(0,1,0,1):
  • 11
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值