Вы должны вызывать метод HSSFCell.getCellType (), чтобы определить его тип.Вот метод, который обрабатывает ячейки типа String или Numeric.(Вы можете легко добавить другие типы.) Формат, используемый для чисел, будет допустимым форматом, но не обязательно будет соответствовать формату таблицы.(Это рассматривается ниже.)
public static String getCellStringValue(final HSSFCell cell) {
int cellType = cell.getCellType();
String value;
if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
// Locale is optional here
DataFormatter dataFormatter = new DataFormatter(Locale.US);
value = dataFormatter.formatCellValue(cell);
} else {
// HSSFCell.CELL_TYPE_STRING
value = cell.getStringCellValue();
} // more cell types are possible. Add whatever you need.
return value;
}
Этот код не обязательно будет форматировать число, как оно выглядит в Excel.Если вам нужно, чтобы формат точно совпадал с форматом электронной таблицы, вы можете получить форматтер из самой ячейки.Для этого вы можете использовать свой экземпляр DataFormatter для создания экземпляра формата:
public static String getCellStringValue(final HSSFCell cell) {
int cellType = cell.getCellType();
String value;
if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
// Locale is optional here
DataFormatter dataFormatter = new DataFormatter(Locale.US);
Format format = dataFormatter.createFormat(cell);
value = format.format(cell.getNumericCellValue());
} else {
// HSSFCell.CELL_TYPE_STRING
value = cell.getStringCellValue();
} // more cell types are possible. Add whatever you need.
return value;
}