2015-10-26 66 views
0

我正在試圖使用POI庫從Excel表格中讀取精確的字符串值。問題在於,要求用戶將單元格類型明確設置爲文本是不可接受的,因此Excel會自動將數字輸入轉換爲數字值。POI從數字excel單元中獲取原始值

當我triing來獲取值回爲一個字符串,發生以下問題:

  1. 我triing使用Cell.getStringValue()功能。它引發一個異常,因爲我的字段被隱式設置爲數字類型字段。

  2. 我正在檢查字段類型,如果我注意到這是一個數字字段,我將它轉換爲一個字符串或者Double.toStringCell.toString(),我的字段使用小數轉換,偶數如果它是一個整數值。 例如,我在字段中寫入數字'1'。它會自動轉換爲1數字值。當我試圖找回字符串值時,我得到「1.0」字符串值,這是有問題的。

有沒有辦法在這種情況下取​​回原始字符串?我可以提出的唯一解決辦法是禁止在用戶輸入中使用小數。

回答

0

我覺得ms excel在這方面是lossy。例如,如果您在單元格中鍵入00123,它將自動轉換爲123。在使用POI讀取數據之前會發生這種情況,所以不幸的是,POI無法訪問原始值。

I think唯一的選擇是將單元格格式設置爲字符串,然後再將數據輸入到單元格中。

非常討厭!

+0

的確很討厭。如果用戶可以看到excel的修改,這不會成爲問題,但是由於excel將顯示的值修剪回'1',這很糟糕。也許將修剪編程爲「excel-like」可能會奏效,但現在需要付出很多努力。 – Robert

+1

啊,如果你只是想像excel那樣格式化單元格,會看到[getCellStyle](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html#getCellStyle())和[DataFormatter](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DataFormatter.html) –

+0

嗯,這是一個可接受的解決方法:)修剪也很簡單,我不是真的很熟悉Java實用程序庫,所以它沒有立即出現在我的腦海裏。 你會用這個解決方法更新你的答案嗎? – Robert

相關問題