使用c#在Excel区域中查找操作日期

本文关键字:查找 操作 日期 区域 Excel 使用 | 更新日期: 2023-09-27 17:51:18

我有一个情况,我正在使用一个Excel工作簿,我想找到每个单元格有一个日期在其中做一些具体的单元格工作。日期在列中,但从我所读到的,似乎更容易抓住整个使用范围并检查单元格。不幸的是,我发现,一旦我有了这些细胞,我就无法检测到其中的日期。下面是我使用的方法的内容:

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");
        }
     }
}

尽管我的测试数据中有一列日期,但从未输入if(test)条件。下面是日期列中的一个字符串示例:

01/08/2007 14:50:50.42

我在网上找到的大部分内容都是关于寻找非常具体的日期字符串,而不仅仅是一般的日期。我希望有人能帮我找到为什么我没有达到预期的条件。

使用c#在Excel区域中查找操作日期

使用上面的方法,您无法区分包含双精度值的单元格和包含真实日期/时间的单元格。另外,您不能将Double的字符串表示形式解析为DateTime。有很多方法可以将OLE DATE(它只是一个double类型)转换为。net DateTime,但您可能不需要这样做。

你看到Value2属性文档上的注释了吗?

该属性与Value属性的唯一区别是Value2属性不使用CurrencyDate数据类型。可以使用Double数据类型返回用这些数据类型格式化的值作为浮点数。

使用Value属性,我相信你会得到。net日期时间。