NPOI使用说明---单元格格式

示例四、设置格式
比如说日期格式(yyyymmdd)、小数点格式(1.20)、货币格式($2000)、百分比格式(99.99%)等等,这些东西在过去我们恐怕只能在服务器端生成好,不但增加了服务器端的代码量,还造成了不必要的字符串替换操作,如今NPOI将让服务器从这种完全没有必要的操作中解放出来,一切都将由Excel在客户端处理。
使用NPOI时要注意,所有的格式都是通过CellStyle.DataFormat赋给单元格的,而不是直接赋给单元格。
案例一、日期格式
假设我们现在需要显示的日期的格式为2008年5月5日,可以用下面的代码生成:
HSSFSheet sheet = hssfworkbook.CreateSheet("newsheet");
HSSFCell cell= sheet.CreateRow(0).CreateCell(0);
cell.SetCellValue(newDateTime(2008,5,5));
//set dateformat
HSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle();
HSSFDataFormat format = hssfworkbook.CreateDataFormat();
cellStyle.DataFormat= format.GetFormat("yyyy年m月d日");
cell.CellStyle=cellStyle;
由于这里的“yyyy年m月d日”属于自定义格式(区别于Excel内嵌的格式),所以必须用hssfworkbook.CreateDataFormat()创建一个HSSFDataFormat实例,然后使用format.GetFormat来获取相应的格式,只要是Excel支持的格式表示方式,这种方式都能够实现。
案例二、保留2位小数
假设我们有个单元格的值为1.2,怎么显示成1.20呢?在Excel中可以用“0.00”来表示,所以下面的代码就能完成:
// Create arow and put some cells in it. Rows are 0 based.
HSSFCell cell= sheet.CreateRow(0).CreateCell(0);
//set valuefor the cell
cell.SetCellValue(1.2);
//numberformat with 2 digits after the decimal point - "1.20"
HSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle();
cellStyle.DataFormat= HSSFDataFormat.GetBuiltinFormat("0.00");
cell.CellStyle= cellStyle;
这里与上面有所不同,用的是HSSFDataFormat.GetBuiltinFormat()方法,之所以用这个,是因为0.00是Excel内嵌的格式,完整的Excel内嵌格式列表大家可以看这个窗口中的自定义列表:

案例三、货币格式
货币格式在金融的项目中经常用到,比如说人民币符号¥,美元符号$等,这里可以用下面的代码表示:
HSSFCellcell2 = sheet.CreateRow(1).CreateCell(0);
cell2.SetCellValue(20000);
HSSFCellStylecellStyle2 = hssfworkbook.CreateCellStyle();
HSSFDataFormatformat = hssfworkbook.CreateDataFormat();
cellStyle2.DataFormat= format.GetFormat("¥#,##0");
cell2.CellStyle= cellStyle2;
注意,这里还加入了千分位分隔符,所以是#,##,至于为什么这么写,你得去问微软,呵呵。
案例四、百分比
百分比在报表中也很常用,其实基本上和上面一样,只是格式表示是0.00%,代码如下:
cellStyle4.DataFormat= HSSFDataFormat.GetBuiltinFormat("0.00%");
由于这里是内嵌格式,所以直接用HSSFDataFormat.GetBuiltinFormat即可。
案例五、数字转中文大写
在表示金额时,我们时常会用到,我也见过不少兄弟实现了数字转中文大小写的工具类,以后你可以尝试让Excel去处理这一切,代码和刚才差不多,也是改格式的表示:
HSSFDataFormat format = hssfworkbook.CreateDataFormat();
cellStyle6.DataFormat= format.GetFormat("[DbNum2][$-804]0");
案例六、科学计数法
这东西数学课上我们都学过,虽然用的不多,但是既然Excel支持,这里也提一下:
cellStyle3.DataFormat= HSSFDataFormat.GetBuiltinFormat("0.00E+00");
最后总结一下HSSFDataFormat.GetFormat和HSSFDataFormat.GetBuiltinFormat的区别:
当使用Excel内嵌的(或者说预定义)的格式时,直接用HSSFDataFormat.GetBuiltinFormat静态方法即可。
当使用自己定义的格式时,必须先调用HSSFWorkbook.CreateDataFormat(),因为这时在底层会先找有没有匹配的内嵌FormatRecord,如果没有就会新建一个FormatRecord,所以必须先调用这个方法,然后你就可以用获得的HSSFDataFormat实例的GetFormat方法了,当然相对而言这种方式比较麻烦,所以内嵌格式还是用HSSFDataFormat.GetBuiltinFormat静态方法更加直接一些。不过自定义的格式也不是天马行空随便定义,还是要参照Excel的格式表示来定义,具体请看相关的Excel教程。
注意:自定义的FormatRecord是嵌入xls文件内部的,所以不用担心对方Excel中有没有定义过这种格式,都是能够正常使用的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的问题。关于用NPOI操作Excel并巧妙使用Excel Chart,以下是我的回答: NPOI是一个用于操作Office文件的.NET库,其中包括Excel文件。通过NPOI,可以轻松地读取、写入和修改Excel文件,同时也可以操作Excel图表。 要创建Excel图表,可以使用NPOI中的Chart类。该类提供了创建不同类型图表的方法,例如折线图、柱形图、饼图等等。在创建图表时,需要指定数据源和图表类型。例如,以下代码创建一个柱形图,并将其插入到Excel工作表中: ``` // 创建一个工作簿 var workbook = new HSSFWorkbook(); // 创建一个工作表 var sheet = workbook.CreateSheet("Sheet1"); // 创建一个柱形图 var chart = sheet.CreateDrawingPatriarch().CreateChart(new HSSFClientAnchor(0, 0, 0, 0, 0, 5, 10, 20)); chart.ChartType = NPOI.SS.UserModel.Charts.ChartType.Bar; // 设置图表数据源 var chartData = chart.ChartData; var chartSeries = chartData.AddSeries(new string[] { "A", "B", "C" }, new[] { 1.2, 3.4, 5.6 }); // 将图表插入到工作表中 sheet.CreateRow(25).HeightInPoints = 250; var anchor = new HSSFClientAnchor(0, 0, 0, 0, 0, 0, 10, 20); anchor.AnchorType = 2; sheet.CreateDrawingPatriarch().CreateChart(anchor).Chart = chart; ``` 以上代码创建一个柱形图,并将其插入到Excel工作表的指定位置。可以通过修改数据源和图表类型来创建不同类型的图表。 希望我的回答对你有所帮助。如果你有任何其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值