2012-12-04 169 views
2

我是Apache POI的用戶,我製作了excel文件(.xlsx),我需要在單元格上使用條件格式。我的問題是這樣的:我有一個公式,如果這個公式返回一個介於0和1之間的值,我想用一位小數顯示結果,而我想用任何小數顯示結果。有可能使用條件格式?如果是的話,我該怎麼做?Apache POI如何使用條件格式更改數據格式

回答

0

使用DataFormatter格式化您的單元格值。

檢查舉例:http://www.roseindia.net/java/poi/setdataformat.shtml

API鏈接:http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DataFormatter.html

這可以幫助你。

+0

的數據格式可以格式化只有正,負,零和文本。我需要使用條件格式。或者如果數據格式可以做到這一點,它是什麼數據格式字符串? – JBerta93

+0

style.setDataFormat(HSSFDataFormat.getBuiltinFormat(「@」)); 通過使用這種數據格式,我們可以將字符串賦值給cell.i.e,當excel表單被修改時,前導零不會被消除。 – swamy

1

這裏是一個將滿足您的要求的代碼:

FileOutputStream out = new FileOutputStream("dateFormat.xls"); 
HSSFWorkbook hssfworkbook = new HSSFWorkbook(); 
HSSFSheet sheet = hssfworkbook.createSheet("new sheet"); 
HSSFCellStyle cs = hssfworkbook.createCellStyle(); 
HSSFDataFormat df = hssfworkbook.createDataFormat(); 
cs.setDataFormat(df.getFormat("#,##0.0")); 

for(int i=0 ;i <100 ; i++) 
{ 
    double value = new Random(i).nextGaussian(); 
    HSSFRow row = sheet.createRow((short) i); 
    HSSFCell cell = row.createCell((short) 0); 
    cell.setCellValue(value); 
    if(value>=0 && value<=1) 
     cell.setCellStyle(cs); 
} 

hssfworkbook.write(out); 
out.close(); 
0
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("@")); 

使用該DATAFORMAT我們可以assighn值作爲字符串的單元格。

2
Cell new_cell = row.createCell(index_column_found); 
XSSFCellStyle cs = wBook.createCellStyle(); 
XSSFDataFormat df = wBook.createDataFormat(); 
cs.setDataFormat(df.getFormat(cell_custom_format)); 
new_cell.setCellStyle(cs); 

這項工作非常好,POI 3.12