java Excel POI导入,获得Cell值

来源:互联网 发布:数码宝贝网络侦探存档 编辑:程序博客网 时间:2024/05/16 07:16

获得excel中的常规的值, 日期类型和数字类型需要稍作注意。

日期类型需要判断不同格式进行转换,不支持自定义格式;

数字类型需要用到org.apache.poi.ss.util.NumberToTextConverter.toText进行转换,获得准确的值;


/** * 根据excel单元格类型获取excel单元格值 * @param cell * @return */private String getCellValue(Cell cell) {String cellvalue = "";if (cell != null) {// 判断当前Cell的Typeswitch (cell.getCellType()) {// 如果当前Cell的Type为NUMERICcase HSSFCell.CELL_TYPE_NUMERIC: {short format = cell.getCellStyle().getDataFormat();if(format == 14 || format == 31 || format == 57 || format == 58){ //excel中的时间格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");                  double value = cell.getNumericCellValue();                  Date date = DateUtil.getJavaDate(value);                  cellvalue = sdf.format(date);  }// 判断当前的cell是否为Dateelse if (HSSFDateUtil.isCellDateFormatted(cell)) {  //先注释日期类型的转换,在实际测试中发现HSSFDateUtil.isCellDateFormatted(cell)只识别2014/02/02这种格式。// 如果是Date类型则,取得该Cell的Date值           // 对2014-02-02格式识别不出是日期格式Date date = cell.getDateCellValue();DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");cellvalue= formater.format(date);} else { // 如果是纯数字// 取得当前Cell的数值cellvalue = NumberToTextConverter.toText(cell.getNumericCellValue()); }break;}// 如果当前Cell的Type为STRINcase HSSFCell.CELL_TYPE_STRING:// 取得当前的Cell字符串cellvalue = cell.getStringCellValue().replaceAll("'", "''");break;case  HSSFCell.CELL_TYPE_BLANK:cellvalue = null;break;// 默认的Cell值default:{cellvalue = " ";}}} else {cellvalue = "";}return cellvalue;}


2 0