janssen-dev
janssen-dev

Reputation: 2771

Get actual cell value of excel cell with POI without defining a datatype

I catch my cells from an .xls file like this:

cell.getStringCellValue();

But since some of the cells are numeric, I have to do this instead:

                try
                {
                    cells[colIx] = cell.getStringCellValue();
                } catch (IllegalStateException e)
                {
                    cells[colIx] = String.valueOf(cell.getNumericCellValue());
                }

since it's getting a double and then converts it to a string this results in some unwanted operations like:

How do I solve this and get the actual cell value instead of some converted numbers? Also, all of the cells are defined as default in excel

Upvotes: 2

Views: 4936

Answers (2)

Ravikumar
Ravikumar

Reputation: 901

You can use Apache POI DataFormatter's formatCellValue(Cell cell) method as it returns the formatted value of a cell as a String regardless of the cell type.

According to DataFormatter doc -

DataFormatter contains methods for formatting the value stored in an Cell. This can be useful for reports and GUI presentations when you need to display data exactly as it appears in Excel. Supported formats include currency, SSN, percentages, decimals, dates, phone numbers, zip codes, etc.

Sample code

DataFormatter dataFormatter= new DataFormatter();

// Inside loop
String cellValueStr = dataFormatter.formatCellValue(cell);

Upvotes: 6

jdlacy
jdlacy

Reputation: 116

try using cell.getCellType() as you have

  1. numeric
  2. date
  3. numeric in scientific notation

Upvotes: 0

Related Questions