首页 > 解决方案 > 从 Excel 获取日期列值

问题描述

我有一个项目给我来解决那里的一些问题。

有一个具有日期列的 Excel 工作表。现在我正在使用以下代码检查日期是否有效。之后try,我不断收到错误消息

字符串“43941”未被识别为有效的日期时间

我在 StackOverflow 上尝试了一些代码,但没有一个为我解决这个问题。

public ValidationResult IsDateValid(ExcelWorksheet workSheet, int noOfRow)
{
    ValidationResult validationResult = new ValidationResult();
    validationResult.ErrorColIndex = 3;
    validationResult.IsValid = true;

    // be on the first column [r,c]
    int row = 2;

    for (int i = 2; i <= noOfRow; i++)   //start from the second row
    {
        if (!string.IsNullOrEmpty(workSheet.Cells[i, 3].Text))
        {
            string date = workSheet.Cells[i, 3].Value.ToString();

            // will throw exception if the fields in tenor are invalid
            try
            {
                DateTime p = DateTime.ParseExact(date.Trim(), "M/dd/yyyy", null);
            }
            catch (Exception ex)
            {
                validationResult.Message = "Invalid Date.";
                validationResult.IsValid = false;
                validationResult.ErrorRowIndex = row;
                break;
            }
        }
        else
        {
            validationResult.Message = "Empty Date.";
            validationResult.IsValid = false;
            validationResult.ErrorRowIndex = row;
            break;
        }

        ++row;
    }

    return validationResult;
}

如果有人能指出我做错了什么,我会很高兴

谢谢

标签: c#exceldatetime.net-core

解决方案


嗨 techstack excel 使用 OLE 自动化日期。

使用DateTime.FromOADate(Double)方法

它返回与指定的 OLE 自动化日期等效的 DateTime。


推荐阅读