C# 从Excel获取日期列值

C# 从Excel获取日期列值,c#,excel,datetime,.net-core,C#,Excel,Datetime,.net Core,我有一个项目交给我去解决那里的一些问题 有一个Excel工作表具有日期列。现在我用下面的代码检查日期是否有效。在尝试之后,我不断得到一个错误 字符串“43941”未被识别为有效的日期时间 我在StackOverflow上尝试了一些代码,但没有一个能帮我解决这个问题 public ValidationResult IsDateValid(ExcelWorksheet workSheet, int noOfRow) { ValidationResult validationResult =

我有一个项目交给我去解决那里的一些问题

有一个Excel工作表具有日期列。现在我用下面的代码检查日期是否有效。在
尝试之后
,我不断得到一个错误

字符串“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;
}
public ValidationResult IsDateValid(Excel工作表,int noOfRow)
{
ValidationResult ValidationResult=新的ValidationResult();
validationResult.ErrorColIndex=3;
validationResult.IsValid=true;
//在第一列[r,c]
int行=2;

对于(int i=2;iHi-techstack excel使用OLE自动化日期

使用
DateTime.FromOADate(Double)
方法


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

Hi-techstack excel使用OLE自动化日期

使用
DateTime.FromOADate(Double)
方法


它返回一个与指定的OLE自动化日期等效的日期时间。

您以何种方式不理解“43941”不是有效的日期格式?我觉得它是一个“天数”值。@Neil yes它的日期格式
20/4/2020
,但“43941”和“20/4/2020”不是相同的格式。您的代码需要在表单中输入一个值“M/dd/yyyy”和字符串“43941”显然与该模式不匹配。听起来您根本不想将其解析为日期-您想将其解析为数字(整数或双精度),然后使用
new DateTime(…)。AddDays()
我已从帖子中删除了无效的ASP.Net核心标记,因为它与问题无关,Excel无法在服务器上正常运行。您以何种方式不理解“43941”不是有效的日期格式?对我来说,它听起来像是一个“天数”值。@Neil是它的日期格式
20/4/2020
但是“43941”和“20/4/2020”“的格式不同。您的代码需要一个格式为“M/dd/yyyy”的值,字符串“43941”肯定与该模式不匹配。听起来您根本不想将其解析为日期-您想将其解析为数字(整数或双精度),然后使用
new DateTime(…)。AddDays()
我已从帖子中删除了无效的ASP.Net核心标记,因为它与问题无关,Excel无法在服务器上正常运行。我怀疑这可能是正确的答案。我怀疑这可能是正确的答案