使用C#查找Excel范围内的操作date

我有一个情况,我正在使用Excel工作簿,我想find每个单元格都有一个date,专门在该单元格上做一些工作。 date是在列中,但从我读过的,似乎更容易抓住整个使用的范围,并检查单元格。 不幸的是,我所发现的是,一旦我拥有这些细胞,我就无法在其中发现一个date。 这里是我正在使用的方法的内容:

Excel.Worksheet sheet = (Excel.Worksheet)oWB.ActiveSheet; Excel.Range range = sheet.UsedRange; //get an array of values from the cells System.Array cellvals = (System.Array)range.Cells.Value2; //go through each foreach(object obj in cellvals) { //is it a datetime? DateTime testdt = new DateTime(); double holder = 0.00; if (double.TryParse(obj.ToString(),out holder)) { bool test = DateTime.TryParse(holder.ToString(), out testdt); if (test) { //check it against litmus test Console.WriteLine("Hit"); } } } 

即使我的testing数据中有一列date, if(test)条件从不input。 以下是date列中的一个string示例:

01/08/2007 14:50:50.42

我在网上find的大多数是关于寻找非常具体的datestring,而不仅仅是一般的date。 我希望有人能够帮助我find为什么我没有达到预期的条件。

使用上述方法,不能区分包含double的单元格和包含真实date/时间的单元格。 此外,您不能将Double的string表示formsparsing为DateTime。 有一些方法可以将OLE DATE(只是一个双精度型)转换为.NET DateTime,但是你可能不需要这样做。

你有没有在Value2属性的文档中看到这个注释?

此属性和Value属性之间的唯一区别是Value2属性不使用货币date数据types。 您可以使用Double数据types将使用这些数据types格式化的值作为浮点数返回。

使用Value属性代替,我相信你会得到.NET DateTimes在你期望的地方。