写了一个获取单元格类型的工具类
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DateUtil;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExcelTypeUtil {
public static String getCellValueByCell(Cell cell) {
if (cell == null || cell.toString().trim().isEmpty()) {
return "";
}
String cellValue = "";
CellType cellType = cell.getCellType();
switch (cellType) {
case BLANK:
cellValue = "";
break;
case BOOLEAN:
cellValue = cell.getBooleanCellValue() + "";
break;
case NUMERIC:
short format = cell.getCellStyle().getDataFormat();
if (DateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = null;
if (format == 20 || format == 32) {
sdf = new SimpleDateFormat("HH:mm");
} else if (format == 14 || format == 31 || format == 57 || format == 58) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
double value = cell.getNumericCellValue();
Date date = DateUtil.getJavaDate(value);
cellValue = sdf.format(date);
} else {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
try {
cellValue = sdf.format(cell.getDateCellValue());
} catch (Exception e) {
try {
throw new Exception("exception on get date data !".concat(e.toString()));
} catch (Exception e1) {
e1.printStackTrace();
}
} finally {
sdf = null;
}
} else {
BigDecimal bd = BigDecimal.valueOf(cell.getNumericCellValue());
cellValue = bd.toPlainString();
}
break;
case STRING:
cellValue = cell.getStringCellValue();
break;
case FORMULA:
cellValue = cell.getCellFormula();
break;
case ERROR:
System.out.println("Error cell");
break;
}
return cellValue;
}
}