2015-05-16 19 views
1

Im編輯一個xlsx文件,我試圖找出數值單元格中的一些錯誤,並使粗體。 的數字很大,例如:13882004729568Poi如何改變風格後改變細胞類型

找到他們並改變字體爲粗體(或改變前景顏色)的細胞類型更改爲默認狀態,我也得到後:b1.3882E + 13 甚至嘗試後將類型更改爲數字。

XSSFFont italic = wb.createFont(); 
italic.setFontName("Arial"); 
italic.setItalic(true); 
CellStyle italicStyle = wb.createCellStyle(); 
italicStyle.setFont(italic); 
cell.setCellStyle(italicStyle); 
cell.setCellType(XSSFCell.CELL_TYPE_NUMERIC); 

我做錯了什麼? 這是否是另一種方式?的setCellTypelink

回答

1

正式文件:

集合中的小區類型(數字式或字符串)。 如果單元格當前包含值,則該值將轉換爲與新類型匹配(如果可能)。但是,格式化通常會丟失。

所以,只需切換的陳述,它應該工作:

cell.setCellType(XSSFCell.CELL_TYPE_NUMERIC); 
cell.setCellStyle(italicStyle); 

另一種可能性是,你跑出來的風格,因爲你創建一個新的每次。創建一次樣式並重用它。

你可以改變細胞類型之前得到的風格,或者你必須設置格式太:

italicStyle.setDataFormat(wb.createDataFormat().getFormat("0")); 

(只顯示器的原理,不創建一個新的數據格式每次,再利用。)

+0

嘗試過,但仍然是一樣的 –

+0

@GurmanEduard那麼你可能會使用另一個函數或更高版本再次設置單元格類型?我在代碼中看不到問題,Excel可能會有非常煩人的限制(樣式數量有限!),但POI本身在我使用它的所有項目中始終可靠。 – maraca

+0

對於每個錯誤的單元格,我只改變了一次樣式,還在不同的位置嘗試了cetCellType方法。我找不到任何其他方式來更改單元格類型。 –

1

的幫助 我所做的@maraca THX是:

XSSFDataFormat df = wb.createDataFormat(); 
italicStyle.setDataFormat(df.getFormat("##0")); 

這樣的格式變了,差