600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > NPOI_Excel中设置小数 百分比 货币 日期 科学计数法和金额大写

NPOI_Excel中设置小数 百分比 货币 日期 科学计数法和金额大写

时间:2020-02-26 20:24:00

相关推荐

NPOI_Excel中设置小数 百分比 货币 日期 科学计数法和金额大写

NPOI_Excel中设置小数、百分比、货币、日期、科学计数法和金额大写

在操作Excel时候一些特殊值的转换是在所难免的,下面就给出转换方法大同小异,代码如下:

HSSFWorkbook hssfWorkbook = new HSSFWorkbook();

ISheet sheet = hssfWorkbook.CreateSheet(“Sheet1”);

//设置第一列(Cell) 宽度

sheet.SetColumnWidth(0, 5000);

//创建格式化 实例对象

IDataFormat format = hssfWorkbook.CreateDataFormat();

// 保留两位小数格式

// 创建一个单元格 “1.20”

ICell cell = sheet.CreateRow(0).CreateCell(0);

//设置单元格的值

cell.SetCellValue(1.2);

ICellStyle cellStyle = hssfWorkbook.CreateCellStyle();

//格式化值

cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat(“0.00”);

cell.CellStyle = cellStyle;

//货币 “¥20,000”

ICell cell2 = sheet.CreateRow(1).CreateCell(0);

cell2.SetCellValue(20000);

ICellStyle cellStyle2 = hssfWorkbook.CreateCellStyle();

cellStyle2.DataFormat = format.GetFormat(“¥#,##0”);

cell2.CellStyle = cellStyle2;

//科学计数法 “3.15E+00”

ICell cell3 = sheet.CreateRow(2).CreateCell(0);

cell3.SetCellValue(3.151234);

ICellStyle cellStyle3 = hssfWorkbook.CreateCellStyle();

cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat(“0.00E+00”);

cell3.CellStyle = cellStyle3;

//百分比 “99.33%”

ICell cell4 = sheet.CreateRow(3).CreateCell(0);

cell4.SetCellValue(0.99333);

ICellStyle cellStyle4 = hssfWorkbook.CreateCellStyle();

cellStyle4.DataFormat = HSSFDataFormat.GetBuiltinFormat(“0.00%”);

cell4.CellStyle = cellStyle4;

//电话号码 “021-65881234”

ICell cell5 = sheet.CreateRow(4).CreateCell(0);

cell5.SetCellValue(02165881234);

ICellStyle cellStyle5 = hssfWorkbook.CreateCellStyle();

cellStyle5.DataFormat = format.GetFormat(“000-00000000”);

cell5.CellStyle = cellStyle5;

//金额大写 - 壹贰叁 元

ICell cell6 = sheet.CreateRow(5).CreateCell(0);

cell6.SetCellValue(123);

ICellStyle cellStyle6 = hssfWorkbook.CreateCellStyle();

cellStyle6.DataFormat = format.GetFormat("[DbNum2][$-804]0 元");

cell6.CellStyle = cellStyle6;

//日期格式化

ICell cell7 = sheet.CreateRow(6).CreateCell(0);

cell7.SetCellValue(new DateTime(, 5, 6));

ICellStyle cellStyle7 = hssfWorkbook.CreateCellStyle();

cellStyle7.DataFormat = format.GetFormat(“yyyy年m月d日”);

cell7.CellStyle = cellStyle7;

//日期格式化

ICell cell8 = sheet.CreateRow(7).CreateCell(0);

cell8.SetCellValue(new DateTime(, 11, 6));

ICellStyle cellStyle8 = hssfWorkbook.CreateCellStyle();

cellStyle8.DataFormat = format.GetFormat(“yyyy年m月d日”);

cell8.CellStyle = cellStyle8;

FileStream file = new FileStream(@“test.xls”, FileMode.Create);

hssfWorkbook.Write(file);

file.Close();

在上面的代码中转换的地方有两个方法:

1.HSSFDataFormat.GetBuiltinFormat()

这种标识转换的格式是Excel内嵌的格式,如:“0.00”,完整的Excel内嵌格式列表大家可以看下图。

2.format.GetFormat(“000-00000000”)

这种则是根据格式去格式化

Excel内嵌格式

看了网上好多帖子,都是保留两位小数的,写法是:

HSSFDataFormat.GetBuiltinFormat(“0.00”);

于是想四位小数,就是多加两个00,变成:

HSSFDataFormat.GetBuiltinFormat(“0.0000”);

说实话,从这里就开始入坑了,活生生被这个坑死了,导出来的,比如是数字:17.88,还是17.88,并没有补全为17.8800;看起来没毛病啊,为嘛不行呢?

后来又翻了遍百度,发现所有文章里都说这是个内嵌的样式,那我想是不是没有理解这个内嵌的意思,所以看了下,发现内嵌指的是自定义的,而默认的自定义是没有的0.0000这种格式的,所以虽然用HSSFDataFormat.GetBuiltinFormat(“0.0000”)设置了,但是也没用。如下图所示,所以这种设置格式的方式并不能实现保留四位小数,不足补0的要求。

故改用了另外一种格式制定方法,将原来的

number4Css.DataFormat =HSSFDataFormat.GetBuiltinFormat(“0.0000”);

改为如下两句话 即可 实现功能

IDataFormat dataformat = wb.CreateDataFormat();

number4Css.DataFormat =dataformat.GetFormat(“0.0000”);

转载

转载

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。