首页 > 代码库 > NPOI 格式设置2—时间,千分位,繁体,小数位

NPOI 格式设置2—时间,千分位,繁体,小数位

在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 formatHSSFCellStyle 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内嵌格式列表大家可以看这个窗口中的自定义列表:

NPOI 格式设置2—时间,千分位,繁体,小数位