zoukankan      html  css  js  c++  java
  • 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(0);//创建一行
    IRow row2 = sheet1.CreateRow(1);//再创建二行
    //sheet1.CreateRow(0).CreateCell(0).SetCellValue("B");//直接在第一行第一列创建并设值
    row1.CreateCell(0).SetCellValue("姓名");//创建一列并在第一列添加内容
    row1.CreateCell(1).SetCellValue("参加工作时间");
    row1.CreateCell(2).SetCellValue("当前日期");
    row1.CreateCell(3).SetCellValue("工作年限");
    ICell cel1 = row2.CreateCell(0);//在第二行创建一列
    ICell cel2 = row2.CreateCell(1);
    ICell cel3 = row2.CreateCell(2);
    ICell cel4 = row2.CreateCell(3);
    cel1.SetCellValue("Tom");//在第二行的第一列添加内容
    cel2.SetCellValue(new DateTime(2004, 7, 1));//添加日期
    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:	es.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)
  • 相关阅读:
    java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
    JNA
    Java发邮件带附件测试通过
    Java-JDBC调用批处理、存储过程、事务
    Java的JDBC事务详解
    对只转发结果集的无效操作:last
    Servlet 监听器
    TOMCAT6热部署配置
    使用命名参数处理 CallableStatement
    如何在JTable中动态添加一行
  • 原文地址:https://www.cnblogs.com/genesis/p/4914395.html
Copyright © 2011-2022 走看看