我使用以下代码从excel文件中读取邮政编码,其价值如下:
06785
excel文件单元格格式为特殊>>邮政编码
File src = new File("C:\\Users\myxl.xlsx");
FileInputStream fis = new FileInputStream(src);
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sh1 = wb.getSheetAt(0);
System.out.println(sh1.getRow(1).getCell(19).getRichStringCellValue());
//Output = Can not get a text value form a numeric cell
wb.close();
fis.close();
我尝试了以下内容:
System.out.println(sh1.getRow(1).getCell(19).getStringCellValue());
//Output = Can not get a text value form a numeric cell
System.out.println(sh1.getRow(1).getCell(19).toString());
//Output = 6785.0
System.out.println(sh1.getRow(1).getCell(19).getNumericCellValue());
//Output = 6785.0
System.out.println(sh1.getRow(1).getCell(19).getRawValue());
//Output = 6785
我无法获得与excel中显示的值完全相同的值,即 06785 ,它始终打印时没有0或.0
是否有人能够帮助解决这个问题,因为我将如何获得邮政编码的输出,因为它完全出现在Excel中 06785 ?
答案 0 :(得分:0)
这似乎解决了现在的问题(使用DecimalFormat)。
如果其他人有更好的答案,请在此提供您宝贵的意见。
非常感谢到目前为止的所有输入。
String myint = new java.text.DecimalFormat("00000").format(sh1.getRow(1).getCell(19).getNumericCellValue());
//OR
DecimalFormat df= new DecimalFormat("00000");
String formatted = df.format(sh1.getRow(1).getCell(19).getNumericCellValue());
System.out.println(myint);
System.out.println("******");
System.out.println(formatted);
答案 1 :(得分:0)
首先,我们需要将值作为字符串从单元格中取出,如下所示。
cell.setCellType(Cell.CELL_TYPE_STRING);
cellValueAsString = zeroPaddingToZipCode(cell.getStringCellValue(););
然后我们需要具有类似的功能,以填充或非填充邮政编码。
private String zeroPaddingToZipCode(String cellValueAsString) {
if(null != cellValueAsString){
if(!cellValueAsString.contains("-")){
if(cellValueAsString.length() == 4 ){
cellValueAsString = "0"+cellValueAsString;
}
} else {
String[] zipCodes = cellValueAsString.split("-");
if(zipCodes.length == 2 ) {
if(zipCodes[0].length() == 4 || zipCodes[0].length() == 2 ) {
cellValueAsString = "0"+zipCodes[0];
} else {
cellValueAsString = zipCodes[0];
}
cellValueAsString += "-";
if(zipCodes[1].length() == 4 || zipCodes[1].length() == 2 ) {
cellValueAsString += "0"+zipCodes[1];
} else {
cellValueAsString += zipCodes[1];
}
}
}
}
return cellValueAsString;
}
检查它是否正常工作