2016-03-22 7 views
1

ich den folgenden Code verwenden Postleitzahl aus meiner Excel-Datei zu lesen, den Wert wie folgt hat: istLese US Postleitzahl von Excel mit Apache poi

Die Excel-Datei Zelle formatiert als Sonder >> zipcode

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(); 

ich habe die folgenden versucht:

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 

ich den Wert nicht genau das bekommen kann, wie es in Excel angezeigt wird, die ist, druckt er immer ohne die 0 oder mit 0,0

Würde als jemand dabei helfen kann, wie ich eine Ausgabe bekommen würde der Postleitzahl, wie es genau in Excel erscheint - ?

+1

arbeitet Dies könnte helfen http://stackoverflow.com/questions/1072561/how-can-i-read-numeric-strings-in-excel-cells-as- string-not-numbers-with-apach – Pragnani

+0

Sie müssen den Zellentyp vor dem Lesen des Zellenwerts auf Cell.CELL_TYPE_STRING festlegen. Zum Beispiel: cell.setCellType (Cell.CELL_TYPE_STRING) – Rg90

+0

Nimm einen numerischen Wert aus der Tabelle und füge die notwendigen führenden Nullen mit 'java.util.Formatter' hinzu. – blafasel

Antwort

0

Dies scheint das Problem vorerst zu lösen (mit DecimalFormat).

Wenn jemand andere bessere Antworten hat, geben Sie bitte hier Ihre wertvollen Informationen an.

Vielen Dank für alle bisherigen Eingaben.

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); 
+0

Bitte schauen Sie sich http://stackoverflow.com/questions/36033189/java-apache-po-custom-format/36040687#36040687 an. Dort habe ich gezeigt, wie man numerische Werte aus Excel mit dem Zahlenformat mit 'CellGeneralFormatter' oder' CellNumberFormatter' bekommt. –

0

Zuerst müssen wir wie unter den Wert als Zeichenfolge von Zelle nehmen ..

cell.setCellType(Cell.CELL_TYPE_STRING); 
cellValueAsString = zeroPaddingToZipCode(cell.getStringCellValue();); 

Dann müssen wir wie unten ähnliche Funktion haben gepolstert oder nicht gepolstert Postleitzahlen haben.

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

Überprüfen Sie, ob es

Verwandte Themen