Java - 利用jxl's NumberCell或String Pattern取得負數值

當我們利用JXL套件讀取Excel內的格式化負數值時,如果單純利用cell的getContents method,

可能會取得含有括號數字的字串,此時再進一步做處理時可能會出錯,或insert to DB會

單單只存入數字(少了負號),因此在這邊將簡單說明如何取得正確的負數值。

在這邊將利用兩個方法取得正確的值,一者為JXL本身所提供,或者利用Java String Pattern取

得括號內的數字。

讀取的範例如下:



一、JXL NumberCell

片段程式如下
NumberCell nc = (NumberCell)sheet.getCell(5, 4);
System.out.println(nc.getValue());

此時取得的為紅色框框的-4.00數值,列印出的內容為-4.0的數值

但若您直接印sheet.getCell(5,4).getContents();,將得到(4.00)的字串

而藍色框框以sheet.getCell(5,3).getContents();,將得到-1的字串

PS.紅色框框為自訂格式的數值;藍色框框為通用格式的數值

二、Java String Pattern

假如,礙於一些原因在修改某些程式時,好死不死傳進來的固定為字串,那當他讀取的為

紅色框框的樣式數值,此時所得到的即為(4.00),這時候除了要取得數值外,還得知道它是

否為(XX)的格式。
Pattern p = Pattern.compile("\\(\\d+\\.\\d+\\)");
Matcher m =p.matcher(value);
System.out.println(m.find()+"=="+m.group());

首先定義所要讀取的樣式,為含有左右括號且含有小數點的數值,再利用find()來判斷是否

符合格式及group()取出數值,最後再自行轉換成負數即可。

留言