excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Java处理EXCEL要注意的几点问题

平时开发,鉴于Excel的便利性,一些人习惯于使用Excel进行数据的批量导入导出,这时我们不免要用到Java与Excel的api,下面我们就实际开发中遇到的问题做详细介绍。Excel的Java调用注意事项1.Excel版本的问题 我们知道,Excel作为微软的一款应用软件,可以有低版本的xls,也会有高版本的xlsx。但是,这两种格式在java调用excel的api库的使用上是不同的。 对于xls: InputStream is = new FileInputStream(file); Workbook workbook = new HSSFWorkbook(is); 对于xlsx InputStream is = new FileInputStream(file); Workbook workbook =new XSSFWorkbook(is); 2.对于空行的处理 int countRow=sheet.getPhysicalNumberOfRows();这句话可以获取Excel的行数,但是这里值得一提的是,这里获取到的行是指激活行,即便没填写任何数据,只要该行被激活,就算。因此使用这句话获取的数值一般会比我们实际的行数多一些。这里我们就要用到行数判空,除去一些空行。 private int CheckRowNull(Row row){ if(row==null){ return 999999999;} int num = 0; Iterator<Cell> cellItr =row.iterator(); while(cellItr.hasNext()){ Cell c =cellItr.next(); if(c.getCellType() ==HSSFCell.CELL_TYPE_BLANK){ num++; } } return num; } 下面我们拿这个返回值跟我们的列数做比较,因为有多少列我们是已知的。下面的27就是指列数,如果空列数比27要大,这么这一行肯定是空行。 int mColEmpty=CheckRowNull(row); if(mColEmpty>=27){continue;} 3.Excel日期格式的判定 一般而言,Excel的日期是按数字格式来获取的,也就是Cell.CELL_TYPE_NUMERIC,然后再通过row.getCell(列标).getDateCellValue()获取日期,这里有个问题,就是如果Excel的单元格格式处理的不好,容易得到一个数字,然后再通过getDateCellValue获取时就得到一个1990年的时间,显然这是不对的。这里我们可以把该行定义为String类型,即row.getCell(列标).setCellType(Cell.CELL_TYPE_STRING);然后再获取row.getCell(列标).getStringCellValue(),如果要存储的列为Date类型,再进行String与Date的转化。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接