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

前端 未结 2 1898
鱼传尺愫
鱼传尺愫 2020-11-30 15:48

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

相关标签:
2条回答
  • 2020-11-30 16:11

    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
    
    0 讨论(0)
  • 2020-11-30 16:21

    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.
    }
    
    0 讨论(0)
提交回复
热议问题