>我在输入xlsx文件中有一个字段,可以包含电子邮件或手机号码。在阅读它时,我有以下逻辑——
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("nnNew 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);
}
}
}
使用正确的 10 位手机号码,以下是输出 -
input mobile? 7.358681129E9
我假设你使用的是Apache POI,所以我建议你不要使用toString((方法。请改用getCellValue((方法。
如果您知道单元格包含的值的类型,则可以使用返回双精度值的特定方法,例如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
此外,我建议您在处理数据之前检查单元格的类型。
我看不到getCell((返回的类型,但我猜它是一个BigDecimal,或者非常相似的东西。BigDecimal 必须 toPlainString((,这可以防止使用指数表示法格式化大数字。无论返回哪种类型,请查看其方法以获取类似内容。