我試圖用POI解析excel工作簿。在紙張,我有顯示爲一些數字:Apache POI:以字符串形式獲取數字,如excel中所示
(它是法國電話號碼,它總是以0開始,並有每2個數字的空格)。
我的需求是從excel單元格中獲得一個字符串,其中包含零和空格。
這裏是從我的調查,一些元素:
double doubleValue = cell.getNumericCellValue(); // worth 6.85856545E8
String dataStringFormat = cell.getCellStyle().getDataStringFormat(); // worth 0#" "##" "##" "##" "##
我想有是POI API的方式爲「dataStringFormat」適用於「中的doubleValue」獲得財產以後像06 85 85 65 45。
任何人都有我如何做到這一點的想法?
非常感謝。
編輯: 加格拉瓦爾讓我走了。他的
DataFormatter fmt = new DataFormatter();
String phoneNumber = fmt.formatCellValue(cell);
仍然返回685856545但我感謝他,我找到了CellNumberFormatter類。並用以下代碼獲取我的06 85 85 65 45:
String stringFormat = cell.getCellStyle().getDataFormatString();
CellNumberFormatter fmt = new CellNumberFormatter(stringFormat);
String phoneNumber = fmt.format(cell.getNumericCellValue()); // = 06 85 85 65 45
我嘗試使用其他格式的技巧,但仍存在一些問題。 - 123 3/25變爲123 ??/?? (不支持部分格式?) - 1,23E + 09變1,23.1,E + 09
一些,因爲區域設置: - 123 456 789變爲123,456,789(分隔符爲千千萬萬我 '在法國',而不是''') - 123,12變成123.45(再次','是法語中的小數點分隔符,不是'。') - €變成了? (編碼在這裏?)
並且有時間和日期的奇怪行爲: -12:12:12 PM變成[$ -4.69] 12:00:42 AM([-4.69]是excel的一部分字符串格式,似乎並沒有被POI支持) -12/11/14變成01/01/04(我不明白那一個...)
我會嘗試調查這一點。
感謝您的幫助。
非常感謝。你的建議並不適合我(我不明白爲什麼),但它讓我走上了路,看到我的編輯,找到我找到的解決方法。 – 2014-09-25 08:31:48
聽起來像你正在使用POI尚未完全處理的格式字符串。因此,您需要向Apache POI項目報告錯誤,並提供一個顯示問題的小電子表格,以便能夠修復 – Gagravarr 2014-09-25 09:58:49
好的,我會用我用來測試的電子表格報告。謝謝你的幫助。 – 2014-09-25 11:50:02