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)