最近一个程序要求excel输出的日期差为Networkdays. 在网上找了下,没有找到很好的具体实现方法。

要说明的是,微软的Microsoft.Office.Interop.Excel已经实现的Networkdays的方法,不过前提是你要实例化一个ApplicationClass,

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

var diff = app.WorksheetFunction.NetworkDays(startDate, endDate, Type.Missing);

这样做的结果是需要一个excel进程在后台运行,如果在导出excel时可以直接用,但是在查询页面里用,我觉得太占用资源了。

我想自写一个方法来实现它,networkdays的第三个参数是加入了假日的,这个不需要,因时间问题暂时先不实现,具体代码如下:

        public static int Networkdays(DateTime startDate, DateTime endDate, params DateTime[] parm)
{
int rd = (int)(endDate - startDate).TotalDays;
if (IsWeekend(endDate) && IsWeekend(startDate) && Math.Abs(rd) < )
return ;
if (rd == )
return ;
int r = ;
DateTime dtTemp = startDate;
if (rd >= )
{
for (int i = ; i <= rd; i++)
{
r++;
dtTemp = dtTemp.AddDays(i);
if (IsWeekend(dtTemp))
{
r--;
}
dtTemp = startDate;
}
return r;
}
else
{
for (int i = ; i >= rd; i--)
{
r--;
dtTemp = dtTemp.AddDays(i);
if (IsWeekend(dtTemp))
{
r++;
}
dtTemp = startDate;
}
return r;
}
}
protected static bool IsWeekend(DateTime dt)
{
int r = (int)dt.DayOfWeek;
if (r == || r == )
{
return true;
}
else
return false;
} }

关于Excel Networkdays方法的实现的更多相关文章

  1. 关于面试题 Array.indexof() 方法的实现及思考

    这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...

  2. 2016 - 2 - 19 ARC内存管理知识总结(一,arc基本概念及alloc等方法的实现)

    一. ARC的基本概念 1. 在objc中采用automatic reference counting 机制, 让编译器来进行内存管理.在降低程序崩溃,内存管理泄漏等风险的同时,很大程度减少了程序员的 ...

  3. 05_动手动脑之String.equals()方法的实现代码

    Question: 请查看String.equals()方法的实现代码,注意学习其实现方法. Answer: java中的String.equals()方法的实现代码: equals()法是根类Obj ...

  4. Atitit paip.对象方法的实现原理与本质.txt

    Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...

  5. matchesSelector及低版本IE中对该方法的实现

    matchesSelector用来匹配dom元素是否匹配某css selector.它为一些高级方法的实现提供了基础支持,比如事件代理,parent, closest等. W3C在2006年就提出了该 ...

  6. 动手动脑之查看String.equals()方法的实现代码及解释

    动手动脑 请查看String.equals()方法的实现代码,注意学习其实现方法. 第一个是false,后三个是true. package stringtest; public class Strin ...

  7. OC:属性的内部实现原理、dealloc内释放实例变量、便利构造器方法的实现原理、collection的内存管理

    代码: // // main.m #import <Foundation/Foundation.h> #import "Person.h" #import " ...

  8. java集合的contains(obj)方法的实现

    在实际项目中我们通常会有一个需求就是:想知道在一个列表中是否包含某一个对象 这里ArrayList表.HashSet表和HashMap表都提供了一个contains(obj)方法, 下面说一下两个列表 ...

  9. [转]原生JS-查找相邻的元素-siblings方法的实现

    在针对element的操作里,查找附近的元素是一个不可少的过程,比如在实现tab时,其中的一个div增加了“on”class,其他的去除“on”class.如果用jquery的朋友就肯定不会陌生sib ...

随机推荐

  1. js createElement

      http://www.w3schools.com/js/js_htmldom_nodes.asp var child = document.getElementById("p1" ...

  2. eclipse 中创建maven web项目

    Maven的Eclipse插件m2eclipse在线安装地址 http://m2eclipse.sonatype.org/sites/m2e:我又试了link方式安装也没什么作用,不知怎么回事? 还有 ...

  3. C#中哈希表与List的比较

    简单概念 在c#中,List是顺序线性表(非链表),用一组地址连续的存储单元依次存储数据元素的线性结构. 哈希表也叫散列表,是一种通过把关键码值映射到表中一个位置来访问记录的数据结构.c#中的哈希表有 ...

  4. Java [Leetcode 217]Contains Duplicate

    题目描述: Given an array of integers, find if the array contains any duplicates. Your function should re ...

  5. Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用

    Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用 在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下. c_cc[VTIME]和c_cc[VMIN] ...

  6. Host绑定

    Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Host ...

  7. 如何卸载eclipse中的ADT

    卸载ADT的方法,方法如下: 1.选择 Help > Install New Software: 2.在"Details" 面板中, 点击"What is alre ...

  8. EF Code First 学习笔记:约定配置

    要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...

  9. 2、Android应用程序基本特性

    1. apk是android应用程序安装格式,.dex是Android二进制执行文件格式. 2.Android操作系统是基于Linux的多用户操作系统,每一个应用程序都是使用的不同的用户. 3. 默认 ...

  10. Clear All of Them I(HDU 3920状压dp)

    题意:给有2*n个敌人的位置,枪在(0,0)位置,一次能消灭两个敌人,耗费能量为枪到一个敌人,由这个敌人再到另个敌人的的距离和,求消灭所有敌人最小耗费能量. 分析:一次枚举状态的两位即可 #inclu ...