使用apache poi从excel阅读美国邮政编码

时间:2016-03-22 19:05:53

标签: java excel

我使用以下代码从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

2 个答案:

答案 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;
}

检查它是否正常工作