2016-08-18 65 views
1

我想從雙轉換爲字符串。它正在工作,但它正在刪除所有前導零。例如,00010000正在更改爲10000,而01更改爲1.我正在嘗試讀取xls文件,這證明很困難。從雙轉換爲字符串,但保持前導零

運行程序時數字的數量是未知的,所以我想不出一種方法來解決這個問題。誰能幫忙?

下面是我的代碼:

while (cells.hasNext()) { 
      cell = (HSSFCell) cells.next(); 
      if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { 
      lineList.add(cell.getStringCellValue()); 
      } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { 
      String s = String.valueOf(cell.getNumericCellValue()); 
      lineList.add(s); 
      } 
     } 
+0

這是一個雙「號碼? 00010000? –

+2

在'double'(或Java中的任何其他數字類型)中沒有這樣的概念。 –

+1

當您轉換爲Java中的字符串時,您可以使用'String.format'設置寬度和精度以及用於填充的前導零。 – jgitter

回答

0

我的猜測,這裏發生了什麼是你必須被格式化爲00010000在Excel中的數字數據。但是,在Excel內部,這些數據可能僅存儲爲1000010000.0等,並且由於格式的原因,前導零纔會出現。當您使用HSSF將此數字數據導入到Java中時,它也以1000010000.0等形式出現。如其他人已經提到的,Java double基本類型中沒有「前導」零。所以當你轉換爲String時,當然不會有前導零,因爲它們根本不存在。

可能的解決方法:

如果格式化您的Excel數值列文本,然後再導入,那麼下面if條件應該解僱這些值:

if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { 
    lineList.add(cell.getStringCellValue()); 
} 

然後,您可以簡單地直接讀入文本值,引導零和全部,並保留Excel電子表格中存在的信息。

我還沒有測試過這個,但如果我遇到了你的問題,這可能是我會嘗試的。