NPOI学习E篇(NPOI 如何创建Excel中的单元格的单元格格式)
2012-08-19 19:28
387 查看
在Excel中我们经常要设置格式,比如说日期格式(yyyymmdd)、小数点格式(1.20)、货币格式($2000)、百分比格式(99.99%)等等,这些东西在过去我们恐怕只能在服务器端生成好,不但增加了服务器端的代码量,还造成了不必要的字符串替换操作,如今NPOI将让服务器从这种完全没有必要的操作中解放出来,一切都将由Excel在客户端处理。
使用NPOI时要注意,所有的格式都是通过CellStyle.DataFormat赋给单元格的,而不是直接赋给单元格。
案例一 日期格式
假设我们现在需要显示的日期的格式为2008年5月5日,可以用下面的代码生成:
HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet");HSSFCell cell = sheet.CreateRow(0).CreateCell(0);cell.SetCellValue(new DateTime(2008,5,5));//set date format
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 a row and put some cells in it. Rows are 0 based.HSSFCell cell = sheet.CreateRow(0).CreateCell(0);//set value for the cellcell.SetCellValue(1.2);//number format 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内嵌格式列表大家可以看这个窗口中的自定义列表:
这里就不一一列出了。
案例三 货币格式
货币格式在金融的项目中经常用到,比如说人民币符号¥,美元符号$等,这里可以用下面的代码表示:
HSSFCell cell2 = sheet.CreateRow(1).CreateCell(0);cell2.SetCellValue(20000);HSSFCellStyle cellStyle2 = hssfworkbook.CreateCellStyle();HSSFDataFormat format = 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");
由于是自定义格式,所以用了HSSFDataFormat.GetFormat,相信你对这两种获取格式的形式的区别越来越熟悉了。
案例六 科学计数法
这东西数学课上我们都学过,虽然用的不多,但是既然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中有没有定义过这种格式,都是能够正常使用的。
使用NPOI时要注意,所有的格式都是通过CellStyle.DataFormat赋给单元格的,而不是直接赋给单元格。
案例一 日期格式
假设我们现在需要显示的日期的格式为2008年5月5日,可以用下面的代码生成:
HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet");HSSFCell cell = sheet.CreateRow(0).CreateCell(0);cell.SetCellValue(new DateTime(2008,5,5));//set date format
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 a row and put some cells in it. Rows are 0 based.HSSFCell cell = sheet.CreateRow(0).CreateCell(0);//set value for the cellcell.SetCellValue(1.2);//number format 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内嵌格式列表大家可以看这个窗口中的自定义列表:
这里就不一一列出了。
案例三 货币格式
货币格式在金融的项目中经常用到,比如说人民币符号¥,美元符号$等,这里可以用下面的代码表示:
HSSFCell cell2 = sheet.CreateRow(1).CreateCell(0);cell2.SetCellValue(20000);HSSFCellStyle cellStyle2 = hssfworkbook.CreateCellStyle();HSSFDataFormat format = 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");
由于是自定义格式,所以用了HSSFDataFormat.GetFormat,相信你对这两种获取格式的形式的区别越来越熟悉了。
案例六 科学计数法
这东西数学课上我们都学过,虽然用的不多,但是既然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中有没有定义过这种格式,都是能够正常使用的。
相关文章推荐
- Excel——如何使用VBA操作单元格的格式
- 如何将excel单元格的默认格式设置为常规格式
- 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法
- NPOI 设置EXCEL单元格格式为 数值
- C#调用NPOI创建Excel文档合并后的单元格写入数据问题一则
- NPOI2.2.0.0实例详解(九)—设置EXCEL单元格【时间格式】
- Excel学习笔记002-002:工作表内及工作表间、工作簿间单元格数据的复制、剪切、粘贴;如何进行成绩排序。
- NPOI 创建 Excel 出错“此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。关闭其他文档再试一次可能有用。”
- 在EXCEL中如何让一列数字变成文本格式?就是想让单元格的左上角变一个绿绿的?
- NPOI 创建 Excel 出错“此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。关闭其他文档再试一次可能有用。”
- JXCELL实例学习与研究(二) 之 EXCEL中各种图表格式的显示 超链接(链接到另外的单元格、WEBSITE、E-MAIL、本地磁盘/文件)
- NPOI创建Excel﹑合并单元格﹑设置单元格样式﹑边框
- 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法
- NPOI创建Excel﹑合并单元格﹑设置单元格样式﹑边框
- Office Open XML学习(1)-创建excel文档,并向单元格中插入字符串
- 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法
- NPOI创建Excel﹑合并单元格﹑设置单元格样式﹑边框
- NPOI2.2.0.0实例详解(八)—设置EXCEL单元格【数字格式】
- NPOI2.2.0.0实例详解(十)—设置EXCEL单元格【文本格式】
- Excel开发学习笔记:文件选择控件、查找匹配项、单元格格式及数据有效性