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

时间: 2024-10-06 23:50:59

NPOI 格式设置2—时间,千分位,繁体,小数位的相关文章

NPOI格式设置1

using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; //创建Execl IWorkbook hssfworkbook =new HSSFWorkbook(); //创建一个Sheet hssfworkbook.CreateSheet("Sheet1"); //HSSFWorkbook实例写入文件 FileStream file = new FileStream(@"test.xls", FileMode.Creat

OpenERP ODOO 千分位设置

转自 :http://www.chinamaker.net/ OpenERP (ODOO)千分位设置在: 设置 > 翻译>语言 1)不同语言可以设置不同的千分位 2)格式选择: Separator format: 分割符之间的数据个数 Thousands Separator: 千分位 小数分隔符:小数之前显示的字符 如果你使用[3,3,3,-1],数1232345.01将显示1,232,345.01.然而,该数目1237891232345.01将显示1237,891,232,345.01. 在

Delphi获取与设置系统时间格式,即GetLocaleInfo和SetLocaleInfo

在Delphi中,特别是在写管理系统软件时,经常要用到 FormatDateTime 以将 TDateTime 格式的日期时间转换成字符串形式的值显示或保存起来,或者用 StrToDateTime将字符串形式的日期时间转换成 TDateTime 然后再做其他操作. 在进行时间或日期的转换时,会使用系统当前设定的时间日期格式.而如果时间日期格式与字符串中的表示方式不相符,会使转换过程失败.例如当前短日期格式设定为'yyyy/MM/dd',而要转为 '2006-10-20'这样的字符串为日期,就会报

sql为数字添加千分位(也就是钱的格式)

感觉这个东西在项目中用得挺多的,之前在前台页面是用正则来处理,现在由于是数据查询,所以直接在查出数据的时候将其转为指定的千分位格式,省的前台再处理,不讲原理,因为我也看不懂,不过会用就行了,在网上找了下,现在自己记录下,方便自己查看. Sql获取数字的千分位,就是将一个数字以三位,用逗号隔开,sql代码如下: (1)不带小数点: select reverse(stuff(reverse(convert(varchar,convert(money,1234333000),1)),1,3,''))

总计字段上加格式:如千分位 比较笨拙的一种方法

//总计字段上加格式:如千分位1.MonWastageSumVO1为table名称2.Totalloss对应table总计字段名称3.bValues是赋给总计的值OATableBean table = (OATableBean)webBean.findIndexedChildRecursive("MonWastageSumVO1");OAWebBean abl = table.findIndexedChildRecursive("Totalloss");if (nu

千分位设置

C#中千分位问题                                                                  1.C#中用最简单的方法把数字(不含小数)转换为千分位格式: 如1234567变成1,234,567 方法:1234567.ToString("###,###") 或 1234567.ToString("N0") 2.C#中把数字转换成带两位小数的千分位字符: 如1234567.891变成1,234,567.89 方法:

IIS时间格式设置

IIS时间格式调整: (已解决)今天在用IIS7的时候发现一个关于时间格式的问题,当我在ASP中使用now()时间函数的时候,日期是以"/"来分隔,而不是以"-"来分隔的,使得我在运行程序的时候老出错,后来经过研究终于找到解方法. 这里我使用的操作系统是Winodws Vista Ultimate Service Pack 1,在ASP中使用now()时间函数出现的结果如下: 2009/3/17 8:11:51 而我想要的结果是2009-3-17 8:11:51,不

edittext实现显示千分位格式

在edittext中你在输入1123456789过程中自动显示为1,123,456,789这种千分位格式的.那么我们该怎么做呢? 查阅Android edittext api发现它有这样一个方法addTextChangedListener,这个方法就是用来监听用户在输入过程中的事件监听,它会重写这几个方法: editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSeq

SQL Server中getdate()函数的时间格式设置

Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06Select