Как получить целочисленные значения из Excel, используя Java - PullRequest
0 голосов
/ 15 февраля 2019

Мой файл Excel имеет телефонные номера и целые числа, такие как 0772354573 и 56674, но мой вывод похож на 07723545E9 и 56674.0, вместо этого мне нужно, чтобы мой вывод был таким, как определено в Excel, как 0772354573 и 56674.

Нижея использую класс данных Getcell, который я скачал из внешнего источника.

public String getCellData(String sheetName,String colName,int rowNum){
    try{
        if(rowNum <=0)
            return "";

        int index = workbook.getSheetIndex(sheetName);
        int col_Num=-1;
        if(index==-1)
            return "";

        sheet = workbook.getSheetAt(index);
        row=sheet.getRow(0);
        for(int i=0;i<row.getLastCellNum();i++){
            //System.out.println(row.getCell(i).getStringCellValue().trim());
            if(row.getCell(i).getStringCellValue().trim().equals(colName.trim()))
                col_Num=i;
        }
        if(col_Num==-1)
            return "";

        sheet = workbook.getSheetAt(index);
        row = sheet.getRow(rowNum-1);
        if(row==null)
            return "";
        cell = row.getCell(col_Num);

        if(cell==null)
            return "";
        //System.out.println(cell.getCellType());
        if(cell.getCellType()==CellType.STRING)
            return cell.getStringCellValue();
        else if(cell.getCellType()==CellType.NUMERIC || cell.getCellType()==CellType.FORMULA ){

            String cellText  = String.valueOf(cell.getNumericCellValue());
            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                // format in form of M/D/YY
                double d = cell.getNumericCellValue();

                Calendar cal =Calendar.getInstance();
                cal.setTime(HSSFDateUtil.getJavaDate(d));
                cellText =
                        (String.valueOf(cal.get(Calendar.YEAR))).substring(2);
                cellText = cal.get(Calendar.DAY_OF_MONTH) + "/" +
                        cal.get(Calendar.MONTH)+1 + "/" +
                        cellText;

                //System.out.println(cellText);

            }



            return cellText;
        }else if(cell.getCellType()==CellType.BLANK)
            return "";
        else
            return String.valueOf(cell.getBooleanCellValue());

    }
    catch(Exception e){

        e.printStackTrace();
        return "row "+rowNum+" or column "+colName +" does not exist in xls";
    }
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Если вы сохраните длинные целочисленные значения, то Excel сожмет и сохранит их, поэтому вы увидите следующие значения:

image' as Prefix">

Если вы нене хотите хранить значения в виде целых чисел или если вы хотите сохранить / получить значения как есть, и если вы не хотите изменять свой код, то вы можете сделать следующее:

image' as Prefix">

Добавьте символ ' перед номером, как указано выше.Например, если число 118995099890796, то вам действительно нужно это '118995099890796.Это означает, что он будет обрабатывать это как строку, и вы можете прочитать это значение, используя метод getStringCellValue().

Надеюсь, это поможет ...

0 голосов
/ 15 февраля 2019

Трудно не идеально, но я бы посоветовал преобразовать числовую ячейку в строковую ячейку перед чтением значения ячейки.А затем проанализировать значение в значение int;

if(cell.getCellType()==CellType.NUMERIC) {
 cell.setCellType(Cell.CELL_TYPE_STRING);
 String cellValue=cell.getStringCellValue();
 int numericValue=Integer.parseInt(cellValue);
}
...