yonjans
yonjans

Reputation: 151

how to read exact cell content of excel file in apache POI

when I read a content of cell for e.g. if it is in date format it casts into some another value like 12/31/2099 -> 46052 and $50.00 -> 50 and 50.00% -> 0.5.

But what I want is to get the exact string value for every cell.

My Code is like this:

cell.setCellType(Cell.CELL_TYPE_STRING);
String str = cell.getStringCellValue();

Upvotes: 3

Views: 5134

Answers (2)

StoopidDonut
StoopidDonut

Reputation: 8617

No need for explicit formatting, Apache POI provides for DataFormatter class as utility to leverage the format of the content as it appears on the excel. You can choose custom formats too, a simple example would be (cell is reference to your XSSFCell object):

System.out.println(new DataFormatter().formatCellValue(cell));

Excel sheet looks like:

enter image description here

Using DataFormatter (sop statement above) prints:

50%
$ 1,200
12/21/14

Where your normal formatting would print:

0.5
1200.0
21-Dec-2014

Upvotes: 5

Jorge_B
Jorge_B

Reputation: 9872

I would not try and alter the data type while I am reading.

Instead of that, I would try to

  • get the cell type first of all
  • then use the appropiate getter method for each data type

For example:

// Let's say you have prepared a DecimalFormat yourNumberFormatter and a
// DateFormat yourDateFormatter with the format that is appropiate to your
// presentation 
Cell cell = ...;
String value = null;
switch (cell.getCellType()) {
   case Cell.TYPE_NUMERIC:
     // Date format
     if ( DateUtil.isCellDateFormatted(cell) ) {
        value = yourDateFormatter.format(cell.getDateCellValue());
     }
     else {
        value = yourNumberFormatter.format(cell.getNumericCellValue());
     }
     break;
   case Cell.TYPE_STRING:
     value = cell.getStringCellValue();
     break;
  // Etc.
}

Upvotes: 0

Related Questions