这是我的代码:
Workbook workbook = new Workbook();
workbook.open(filename);
Worksheet worksheet = workbook.getWorksheets().getSheet(sheetno);
Cells cells=worksheet.getCells();
int num=cells.getMaxDataRow();
int num1=cells.getMaxDataColumn();
int OCount=1;
for (int n1=startpos+1;n1<endpos;n1++)
{ if (cells.checkCell(n1, Colno).getValue()==null )
{ Cell cell=cells.getCell(n1,Colno);
Style style = cells.getCell( n1,Colno).getStyle();
style.setColor(Color.TEAL);
cell.setStyle(style);
} else if(cells.checkCell(n1, Colno).getValue().toString().length()==0) { Cell cell=cells.getCell(n1,Colno);
Style style = cells.getCell( n1,Colno).getStyle();
style.setColor(Color.TEAL);
cell.setStyle(style); } else{ double intCounter = Double.parseDouble(cells.checkCell(n1,Colno).getValue().toString());
System.out.println(cells.checkCell(n1,Colno).getValue().toString());
if(intCounter!=Count){
Cell cell=cells.getCell(n1,Colno);
Style style = cells.getCell( n1,Colno).getStyle();
style.setColor(Color.YELLOW);
cell.setStyle(style);
}
}
Count=Count+1;
} workbook.save("C:\\output.xls",FileFormatType.EXCEL97TO2003);
我正在尝试检查Sr no是否按顺序排列。如果没有空字符串“”,它工作正常。对于空字符串,它会抛出
线程中的异常“AWT-EventQueue-0”java.lang.NumberFormatException:empty String。
提前致谢....
答案 0 :(得分:3)
问题在于这行代码:
Double.parseDouble(cells.checkCell(n1,Colno).getValue().toString());
你尝试用空字符串制作一个Double。 Check the documentation您将看到NumberFormatException是预期的行为。因此,您必须首先检查String是否为空或执行正确的错误处理。
这里是来自Double.parseDouble(...)方法的API的引用:
抛出:
NumberFormatException
- 如果字符串不包含 可解析的双倍。
答案 1 :(得分:0)
通过使用实用程序方法更好地处理这些情况。
private Double getCorrectedDouble(CellValues... ){
//check and handle empty fields
//return new Double(0) if the target is empty
}