NPOI 1.2.4教程 –日期函数
//Excel中有非常丰富的日期处理函数,在NPOI中同样得到了很好的支持。如下图:

using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.SS.UserModel; HSSFWorkbook workbook = new HSSFWorkbook();//创建一个表
ISheet sheet1 = workbook.CreateSheet("Sheet1");//创建一个sheet
IRow row1 = sheet1.CreateRow();//创建一行
IRow row2 = sheet1.CreateRow();//再创建二行
//sheet1.CreateRow(0).CreateCell(0).SetCellValue("B");//直接在第一行第一列创建并设值
row1.CreateCell().SetCellValue("姓名");//创建一列并在第一列添加内容
row1.CreateCell().SetCellValue("参加工作时间");
row1.CreateCell().SetCellValue("当前日期");
row1.CreateCell().SetCellValue("工作年限");
ICell cel1 = row2.CreateCell();//在第二行创建一列
ICell cel2 = row2.CreateCell();
ICell cel3 = row2.CreateCell();
ICell cel4 = row2.CreateCell();
cel1.SetCellValue("Tom");//在第二行的第一列添加内容
cel2.SetCellValue(new DateTime(, , ));//添加日期
cel3.CellFormula = "TODAY()";//添加当前日期
cel4.CellFormula = "CONCATENATE(DATEDIF(B2,TODAY(),\"y\"),\"年\",DATEDIF(B2,TODAY(),\"ym\"),\"个月\")";
//在poi中日期是以double类型表示的,所以要格式化
//设置日期格式
ICellStyle cellStyle = workbook.CreateCellStyle();
IDataFormat format = workbook.CreateDataFormat();
cellStyle.DataFormat = format.GetFormat("yyyy-m-d");
cel2.CellStyle = cellStyle;
cel3.CellStyle = cellStyle;
using (FileStream file = new FileStream(@"c:\tes.xls", FileMode.Create))
{
workbook.Write(file);//写入输出流中
}
下面对上例中用到的几个主要函数作一些说明:
TODAY():取得当前日期;
DATEDIF(B2,TODAY(),"y"):取得B2单元格的日期与前日期以年为单位的时间间隔。(“Y”:表示以年为单位,”m”表示以月为单位;”d”表示以天为单位);
CONCATENATE(str1,str2,…):连接字符串。
另外附上Excel中常用的日期函数列表,只需要将此句代码作适当修改即可:
cel4.CellFormula = "CONCATENATE(DATEDIF(B2,TODAY(),\"y\"),\"年\",DATEDIF(B2,TODAY(),\"ym\"),\"个月\")";
| 函数名 | 函数说明 | 语法 |
|---|---|---|
| DATE | 返回代表特定日期的系列数。 | DATE(year,month,day) |
| DATEDIF | 计算两个日期之间的天数、月数或年数。 | DATEDIF(start_date,end_date,unit) |
| DATEVALUE | 函数 DATEVALUE 的主要功能是将以文字表示的日期转换成一个系列数。 | DATEVALUE(date_text) |
| DAY | 返回以系列数表示的某日期的天数,用整数 1 到 31 表示。 | DAY(serial_number) |
| DAYS360 | 按照一年 360 天的算法(每个月以 30 天计,一年共计 12 个月),返回两日期间相差的天数。 | DAYS360(start_date,end_date,method) |
| EDATE | 返回指定日期 (start_date) 之前或之后指定月份数的日期系列数。使用函数 EDATE 可以计算与发行日处于一月中同一天的到期日的日期。 | EDATE(start_date,months) |
| EOMONTH | 返回 start-date 之前或之后指定月份中最后一天的系列数。用函数 EOMONTH 可计算特定月份中最后一天的时间系列数,用于证券的到期日等计算。 | EOMONTH(start_date,months) |
| HOUR | 返回时间值的小时数。即一个介于 0 (12:00 A.M.) 到 23 (11:00 P.M.) 之间的整数。 | HOUR(serial_number) |
| MINUTE | 返回时间值中的分钟。即一个介于 0 到 59 之间的整数。 | MINUTE(serial_number) |
| MONTH | 返回以系列数表示的日期中的月份。月份是介于 1(一月)和 12(十二月)之间的整数。 | MONTH(serial_number) |
| NETWORKDAYS | 返回参数 start-data 和 end-data 之间完整的工作日数值。工作日不包括周末和专门指定的假期 | NETWORKDAYS(start_date,end_date,holidays) |
| NOW | 返回当前日期和时间所对应的系列数。 | NOW( ) |
| SECOND | 返回时间值的秒数。返回的秒数为 0 至 59 之间的整数。 | SECOND(serial_number) |
| TIME |
返回某一特定时间的小数值,函数 TIME 返回的小数值为从 0 到 0.99999999 之间的数值,代表从 0:00:00 (12:00:00 A.M) 到 23:59:59 (11:59:59 P.M) 之间的时间。 |
TIME(hour,minute,second) |
| TIMEVALUE | 返回由文本串所代表的时间的小数值。该小数值为从 0 到 0.999999999 的数值,代表从 0:00:00 (12:00:00 AM) 到 23:59:59 (11:59:59 PM) 之间的时间。 | TIMEVALUE(time_text) |
| TODAY | 返回当前日期的系列数,系列数是 Microsoft Excel 用于日期和时间计算的日期-时间代码。 | TODAY( ) |
| WEEKDAY | 返回某日期为星期几。默认情况下,其值为 1(星期天)到 7(星期六)之间的整数。 | WEEKDAY(serial_number,return_type) |
| WEEKNUM | 返回一个数字,该数字代表一年中的第几周。 | WEEKNUM(serial_num,return_type) |
| WORKDAY | 返回某日期(起始日期)之前或之后相隔指定工作日的某一日期的日期值。工作日不包括周末和专门指定的假日。 | WORKDAY(start_date,days,holidays) |
| YEAR | 返回某日期的年份。返回值为 1900 到 9999 之间的整数。 | YEAR(serial_number) |
| YEARFRAC | 返回 start_date 和 end_date 之间的天数占全年天数的百分比。 | YEARFRAC(start_date,end_date,basis) |
NPOI 1.2.4教程 –日期函数的更多相关文章
- NPOI 1.2.5 教程
NPOI1.2.5教程官方地址 作者:Tony Qu & atao.xiang QQ群:20144214 ===== 持续更新中 ===== a. NPOI简介 b. 版权声明 目录 1. O ...
- [php基础]Mysql日期函数:日期时间格式转换函数详解
在PHP网站开发中,Mysql数据库设计中日期时间字段必不可少,由于Mysql日期函数输出的日期格式与PHP日期函数之间的日期格式兼容性不够,这就需要根据网站实际情况使用Mysql或PHP日期转换函数 ...
- PHP之时间和日期函数
// 时间日期函数 Time <?php date_default_timezone_set('UTC'); // 获取当前时间的时间戳 $time0 = mktime(); $time1 = ...
- SQL Server 日期函数:EOMonth、DateFormat、Format、DatePart、DateName
一,月份的最后一天 函数 EOMonth 返回指定日期的最后一天 EOMONTH ( start_date [, month_to_add ] ) 1,对于start_date 有两种输入方式,能够转 ...
- mysql 日期函数总结
1.0 格式化:DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,format) date 参数是合法的日期.format 规定日期/时间的 ...
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- sql 的实用函数(包含日期函数、截取字符串函数)
CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),data_to_b ...
- DB2 SQL 日期函数
DB2 SQL 日期函数1:CURRENT TIMESTAMP 函数:获取当前日期时间语法:CURRENT TIMESTAMP参数:当前日期时间返回值:当前日期时间 2:CURRENT DATE 函数 ...
- SQLserver日期函数
------------------日期转化成年月日时分秒毫秒--------------- select 'R'+CONVERT(varchar(100), GETDATE(), 112)+ri ...
随机推荐
- linux查找某一进程并杀死
1. 查找redis进程 ps -ef|grep redis-server 2.打印第二个参数,因为上面第二列是进程号 3.这两个进程号有一个是grep进程号,所以要去掉,反选 grep ps ...
- C语言中free函数是如何确定要释放多少内存空间的
本文链接:http://www.cnblogs.com/xxNote/p/4009359.html 今天看书的时候看到free函数释放动态申请的内存时只需要把内存块的首地址传过去就行了,显然仅仅依靠首 ...
- (二)js下拉菜单
默认的select标签比较难看,UI比较漂亮,如果想要实现UI上的下拉样式,好像必须用js写select,从网上拷贝而且修改了一个下拉框,为了方便以后引用所以记录下来. /* diy_select * ...
- HDU 5120 A Curious Matt(2014北京赛区现场赛A题 简单模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5112 解题报告:扫一遍 #include<cstdio> #include<cstr ...
- LA 2678 Subsequence(二分查找)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- Unity手游之路<十>自动寻路Navmesh之跳跃,攀爬,斜坡
http://blog.csdn.net/janeky/article/details/17598113 在之前的几篇Blog总,我们已经系统学习了自动寻路插件Navmesh的相关概念和细节.然而,如 ...
- (苹果AppleWWDRCA.cer证书过期)Failed to locate or generate matching signing assets
从2月14号开始,上传AppStore会碰到:Failed to locate or generate matching signing assets 字数462 阅读13571 评论16 喜欢61 ...
- 极客DIY:制作一个可以面部、自主规划路径及语音识别的无人机
引言 现在大部分无人机厂商都会为第三方开发者提供无人机API接口,让他们更容易地开发无人机飞行控制应用程序,让无人机想怎么玩就怎么玩.有的API接口可以帮助开发者开发基于Web版的APP.手机APP甚 ...
- 转:SQL子句的执行顺序
SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后 ...
- EOS/普元:概述:中国IT业的悲哀
公司引入了普元的EOS作为公司的基础架构平台,今后的所有项目将逐步向EOS的迁移,但对EOS的研究又让我不得不说出以下话: 1.EOS确实够简单,但未免简单过了头:从语言层面看EOS 因为EOS将成为 ...