setcellvalue 格式_POI对Excel单元格的格式的设置参数
最近在做導出Excel的功能封裝,遇到了幾個問題:
單元格寬度問題
數據不是數字格式問題
格式化了之后顯示的不是數字而是######的問題(其實是因為單元格寬度不夠導致的無法顯示格式化之后的內容)
下面先說說解決方法:
1、單元格寬度問題
這個問題有兩個解決辦法,一個是
sheet.autoSizeColumn(1);
sheet.autoSizeColumn(1, true);
這種是自適應,第一參數是列號,從0開始,第二參數是是否考慮合并單元格。
還有一種是固定的多寬,這個寬度值就交給自己去測試了:
sheet.setColumnWidth(1, 5000)
這個第二個參數是寬度,具體上面說了自己測試。5000就很寬了,看放什么了。
2、數據不是數字格式問題
這個看api的感覺應該是設置這么個參數,cell.setCellType(Cell.CELL_TYPE_NUMERIC);
但是實際上這個參數設置了不起作用,后來發現自己放的值是String類型,所以不行,后來改為了Double.valueOf(str)方法,發現還是不行,換成Double.parseDouble(str)就行了,原來前面的方法返回的是Double,后面的是double,封裝類型也不行。。。
后來就統一把所有的參數設置為Object類型了,這樣好轉。
3、格式化后顯示###
這里是因為寬度不夠啦,所以我這里主要說一下怎么格式化好了。
其實Excel本身帶了一部分的格式化,見下圖
如上圖所示,Excel自帶了一部分格式,而poi的DataFormat中也自帶了這些格式并對應了short值,如下所示:
內置數據類型
編號
"General"
0
"0"
1
"0.00"
2
"#,##0"
3
"#,##0.00"
4
"($#,##0_);($#,##0)"
5
"($#,##0_);[Red]($#,##0)"
6
"($#,##0.00);($#,##0.00)"
7
"($#,##0.00_);[Red]($#,##0.00)"
8
"0%"
9
"0.00%"
0xa
"0.00E+00"
0xb
"# ?/?"
0xc
"# ??/??"
0xd
"m/d/yy"
0xe
"d-mmm-yy"
0xf
"d-mmm"
0x10
"mmm-yy"
0x11
"h:mm AM/PM"
0x12
"h:mm:ss AM/PM"
0x13
"h:mm"
0x14
"h:mm:ss"
0x15
"m/d/yy h:mm"
0x16
保留為過國際化用
0x17 - 0x24
"(#,##0_);(#,##0)"
0x25
"(#,##0_);[Red](#,##0)"
0x26
"(#,##0.00_);(#,##0.00)"
0x27
"(#,##0.00_);[Red](#,##0.00)"
0x28
"_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)"
0x29
"_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)"
0x2a
"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"
0x2b
"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"
0x2c
"mm:ss"
0x2d
"[h]:mm:ss"
0x2e
"mm:ss.0"
0x2f
"##0.0E+0"
0x30
"@" - This is text format
0x31
使用下面的代碼來設置
1
2
3
4
CellStylecellStyle=workBook.createCellStyle();
DataFormatformat=workBook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("@"));
cell.setCellStyle(cellStyle);
接下來我會舉例日期、小數、貨幣、百分比、中文大寫、科學計數幾種方式的格式化:
1、日期格式
Java
1
2
3
4
5
6
cell.setCellValue(newDate(2008,5,5));
//set date format
CellStylecellStyle=workBook.createCellStyle();
DataFormatformat=workBook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("yyyy-MM-dd"));
cell.setCellStyle(cellStyle);
2、小數格式
Java
1
2
3
4
cell.setCellValue(1.2);
CellStylecellStyle=workBook.createCellStyle();
cellStyle.setDataFormat(DataFormat.getBuiltinFormat("0.00"));
cell.setCellStyle(cellStyle);
3、貨幣格式
Java
1
2
3
4
5
cell.setCellValue(20000);
CellStylecellStyle=workBook.createCellStyle();
DataFormatformat=workBook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("¥#,##0"));
cell.setCellStyle(cellStyle);
4、百分比格式
Java
1
2
3
4
cell.setCellValue(20);
CellStylecellStyle=workBook.createCellStyle();
cellStyle.setDataFormat(DataFormat.getBuiltinFormat("0.00%"));
cell.setCellStyle(cellStyle);
5、中文大寫格式
Java
1
2
3
4
5
cell.setCellValue(20000);
CellStylecellStyle=workBook.createCellStyle();
DataFormatformat=workBook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("[DbNum2][$-804]0"));
cell.setCellStyle(cellStyle);
6、科學計數格式
Java
1
2
3
4
cell.setCellValue(20000);
CellStylecellStyle=workBook.createCellStyle();
cellStyle.setDataFormat(DataFormat.getBuiltinFormat("0.00E+00"));
cell.setCellStyle(cellStyle);
這里面一部分使用的是DataFormat.getBuiltinFormat(),是由于這部分格式化是Excel中自帶的格式,具體自帶的格式大家可以自己打開Excel看看,上圖也有截出一部分。
到此POI的Excel的單元格格式化方式的一些問題就解決了。
總結
以上是生活随笔為你收集整理的setcellvalue 格式_POI对Excel单元格的格式的设置参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: securecrt哪个版本好用_电脑跑分
- 下一篇: 优朋普乐大数据_优朋普乐邵以丁:用大数据