poi操作excel常用api

1.获取excel对象

// 获取spring boot下resource的excel文件
ClassPathResource classPathResource = new ClassPathResource("/templates/excel/aluminum_a.xlsx");
// 传入excel的输入流
InputStream inputStream =classPathResource.getInputStream();
Workbook workbook = WorkbookFactory.create(inputStream );

2.获取sheet对象

// 根据名称获取sheet页
Sheet sheet = workbook.getSheet("name");
// 根据排序获取sheet页
Sheet sheet = workbook.getSheetAt(0);
// 创建sheet页
Sheet sheet = workbook.createSheet();
// 创建已name为名称的sheet页
Sheet sheet = workbook.createSheet("name");

3.获取row对象

// 获取第一行的对象,不存在则返回null
Row row = sheet.getRow(0);
// 创建第一行的对象, 如果当前行存在会把当前行的数据覆盖掉
Row row = sheet.createRow(0);
// 建议封装成方法  当前有数据则返回,为null则创建row
private Row getRow(Sheet sheet,Integer index){

     Row row = sheet.getRow(index);
     if (row == null){
         return sheet.createRow(index);
     }
     return row;
 
}

4.获取cell对象

// 获取第一列的对象,不存在则返回null
Cell cell = row.getCell(0);
// 创建第一列的对象,如果当前列存在会把当前列的数据覆盖掉
Cell cell = row.createCell(0);
// 建议封装成方法  当前有数据则返回,为null则创建cell
private Cell getCell(Row row,Integer index){
    Cell cell = row.getCell(index);
    if (cell == null){
        return row.createCell(index);
	}
	return cell;return cell;
}

5.合并单元格

// 根据起始行,终止行,起始列,终止列数进行合并
// 同行同列合并会报错,有合并的行或列不能在合并会报错,需要先取消合并单元格在合并
CellRangeAddress rangeAddress = new CellRangeAddress(firstRow,lastRow,firstCol,lastCol);
sheet.addMergedRegion(rangeAddress);

6.取消合并单元格

// 参数1:sheet、参数2:开始行、参数3:开始列
public static void removeMergedRegion(Sheet sheet, int row , int column){
    int sheetMergeCount = sheet.getNumMergedRegions();//获取所有的单元格
    int index = 0;//用于保存要移除的那个单元格序号
    for (int i = 0; i < sheetMergeCount; i++) {
        CellRangeAddress ca = sheet.getMergedRegion(i); //获取第i个单元格
        int firstColumn = ca.getFirstColumn();
        int lastColumn = ca.getLastColumn();
        int firstRow = ca.getFirstRow();
        int lastRow = ca.getLastRow();
        if(row >= firstRow && row <= lastRow)
        {
            if(column >= firstColumn && column <= lastColumn)
            {
                index = i;
            }
        }
    }
    sheet.removeMergedRegion(index);//移除合并单元格
}


7.行高和单元格样式

  //设置单元格背景颜色
  Sheet sheet=workbook.getSheetAt(0);
  Row row=sheet.getRow(0);
  // 设置行高(设置必须是excel行高的20倍)
  row.setHeight((short) (43 * 20));
  Cell cell=row.getCell(0);
  CellStyle style = workbook.createCellStyle();
  style.cloneStyleFrom(cell.getCellStyle());
  //设置背景颜色
  style.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());
  style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
  //设置自动换行
  style.setWrapText(true);

  //设置字体样式
  Font font= row.getSheet().getWorkbook().createFont();
  //默认字体为宋体
  font.setFontName("宋体");
  //设置字体大小
  font.setFontHeight((short) 18);
  //设置字体颜色
  font.setColor(IndexedColors.BLUE_GREY.getIndex());
  //设置字体加粗
  font.setBold(true);
  //设置字体斜体
  font.setItalic(true);
  //设置字体下划线
  font.setUnderline(Font.U_SINGLE);
  //设置字体上标下标
  font.setTypeOffset(Font.SS_SUPER);
  //设置字体删除线
  font.setStrikeout(true);
  style.setFont(font);

  //边框样式
  //设置上边框线条类型
  style.setBorderTop(BorderStyle.THIN);
  //设置右边框线条类型
  style.setBorderRight(BorderStyle.THIN);
  //设置下边框线条类型
  style.setBorderBottom(BorderStyle.THIN);
  //设置左边框线条类型
  style.setBorderLeft(BorderStyle.THIN);
  //设置上边框线条颜色
  style.setTopBorderColor(IndexedColors.BLUE_GREY.getIndex());
  //设置右边框线条颜色
  style.setRightBorderColor(IndexedColors.BLUE_GREY.getIndex());
  //设置下边框线条颜色
  style.setBottomBorderColor(IndexedColors.BLUE_GREY.getIndex());
  //设置左边框线条颜色
  style.setLeftBorderColor(IndexedColors.BLUE_GREY.getIndex());

  //对齐方式
  //设置水平对齐方式
  style.setAlignment(HorizontalAlignment.CENTER);
  //设置垂直对齐方式
  style.setVerticalAlignment(VerticalAlignment.CENTER);

  //设置列宽行高
  //设置自适应列宽
  sheet.setDefaultColumnWidth(0);
  //自定义列宽
  sheet.setColumnWidth(0,10);
  //自定义行高
  row.setHeight((short)10);

  //冻结行和列
 sheet.createFreezePane(1, 1);

8.设置字段里面某个字符串的样式

XSSFRichTextString richTextString = (XSSFRichTextString)sheet.getWorkbook()
.getCreationHelper()
.createRichTextString(title);


Font font = sheet.getWorkbook().createFont();
font.setColor(IndexedColors.RED.getIndex());
font.setFontHeightInPoints((short)18);
font.setFontName("宋体");

richTextString.applyFont(4,6,font);

Font font1 = sheet.getWorkbook().createFont();
font1.setFontName("宋体");
font1.setFontHeightInPoints((short)18);
richTextString.applyFont(6,title.length(),font1);

cellStyle.setFont(font1);
cell.setCellStyle(cellStyle);
cell.setCellValue(richTextString);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值