scala使用poi处理excel笔记

1、版本问题

HSSFWorkbook操作Excel2003及以前版本,扩展名是.xls

XSSFWorkbook操作Excel2007及以后的版本,扩展名是.xlsx

2、判断单元格是否为空

判断单元格对象是否为空且内容是否为空字符串:

/**
   * 判断单元格是否为空,true为空
   *
   * @param cell 单元格对象
   * @return boolean
   */
def isEmptyCell(cell: Cell): Boolean = {
    cell == null || cell.getCellTypeEnum.equals(CellType.BLANK)
  }

3、以字符串格式取出单元格内容

因为取出单元格内容时必须使用固定方法取出对应类型的数据,类型不匹配会报错,如果想内容都以字符串取出时可以用DataFormatter类进行格式化:

val formatter: DataFormatter = new DataFormatter
//将单元格对象传入获得string类型的数据
val value: String = formatter.formatCellValue(cell)

以其它已知格式取出内容:

//只有数字类型,如果需要精确需要转型,例如以下的int类型
val value: Int = cell.getNumericCellValue.toInt

4、获取excel总行数、列数

//获取所有行数,不包括空行
val rowNum: Int = sheet.getPhysicalNumberOfRows

//获取最后一行编号,包括空行
val lastRowNum: Int = sheet.getLastRowNum

//获取该行不包括空的所有个数
val cellNum: Int = row.getPhysicalNumberOfCells

//获取该行最后一个单元格的编号
val lastCellNum: Int = row.getLastCellNum

5、设置单元格风格

val workbook: HSSFWorkbook = new HSSFWorkbook()

//设置字体对象,加粗,12号
val font: HSSFFont = workbook.createFont()
font.setFontHeightInPoints(12)

//设置单元格风格对象
val cellStyle: HSSFCellStyle = workbook.createCellStyle()
cellStyle.setFont(font) //将字体设置到风格中
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex) //设置填充颜色
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND) //设置填充模式
cellStyle.setBorderBottom(BorderStyle.DASH_DOT); //下边框
cellStyle.setBorderLeft(BorderStyle.DASH_DOT);//左边框
cellStyle.setBorderTop(BorderStyle.DASH_DOT);//上边框
cellStyle.setBorderRight(BorderStyle.DASH_DOT);//右边框

//创建sheet页名
val sheet: HSSFSheet = workbook.createSheet("template")

//创建第一行对象
val firstRow: HSSFRow = sheet.createRow(0)

//创建第一行第一个单元格对象
val firstCell: HSSFCell = firstRow.createCell(0)

//将单元格应用风格
firstCell.setCellStyle(cellStyle)
posted @ 2021-10-08 17:37  Leil_blogs  阅读(370)  评论(0编辑  收藏  举报