日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

setcellvalue 格式_POI对Excel单元格的格式的设置参数

發布時間:2023/12/2 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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单元格的格式的设置参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。