Java:从字段读取数字值,字符串显示小数

时间:2018-05-24 20:56:36

标签: java formatting apache-poi xlsx

输入xlsx文件中有一个字段,可以包含电子邮件或手机号码。在阅读时,我有以下逻辑 -

for (NSString *key in orderedKeys) {
    NSArray *properties = dict[key];
    ...
}

使用正确的10位移动电话号码,以下是输出 -

Workbook workbook = WorkbookFactory.create(new File("./TXN_Log_Mar_18_input.xlsx"));
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.rowIterator();
while (rowIterator.hasNext() && cnt <maxRows) {
    System.out.println("\n\nNew row "+cnt+" ");
    Row row = rowIterator.next();
    if(row.getCell(11).toString() !="" || row.getCell(12).toString() !="")
    {

        String debitUser = row.getCell(11).toString();
        System.out.println("input mobile? "+debitUser);
        if(emailFormat(debitUser) || mobileFormat(debitUser))
        {
            response  = umCall(debitUser);
        }   

    }
}

2 个答案:

答案 0 :(得分:1)

我假设您使用的是Apache POI,因此我建议您不要使用toString()方法。改为使用getCellValue()方法。

如果您知道单元格包含的值的类型,则可以使用返回double的特定方法,如getNumericCellValue()。然后您可以根据需要格式化数据。

double cellValue = row.getCell(11).getNumericCellValue();
System.out.println("input mobile? " + (int) cellValue);

可能是这样的。

请参阅单元格文档以找到最佳方法。

https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html

另外,我建议您在处理数据之前检查单元格的类型。

答案 1 :(得分:0)

我无法看到getCell()返回的类型,但我猜测它是BigDecimal,或类似的东西。 BigDecimal有toPlainString(),它可以防止使用指数表示法格式化大数字。无论返回什么类型,请查看类似的方法。