如何使用Java

时间:2019-02-15 06:51:57

标签: java apache selenium selenium-webdriver apache-poi

我的Excel文件具有电话号码和整数,如0772354573和56674,但是我的输出类似于07723545E9和56674.0,相反,我需要我的输出像在excel中定义为0772354573和56674。

下面是Getcell数据类im,我从外部来源下载了该数据类。

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 :(得分:3)

如果存储长整数值,则excel将压缩并存储它们,因此您将看到如下所示的值:

Before Appending <code>'</code> as Prefix

如果您不想将值存储为整数,或者如果您想按原样存储/检索值,并且不想更改代码,则可以执行以下操作:

After Appending <code>'</code> as Prefix

在上面的数字前附加一个'符号。例如,如果数字为118995099890796,则您确实喜欢此'118995099890796。这意味着,它将把它当作一个字符串,您可以使用getStringCellValue()方法读取该值。

希望对您有帮助...

答案 1 :(得分:0)

这不是很理想,但是我建议在读取单元格值之前将Number单元格转换为String单元格。然后将值解析为int值;

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