【问题标题】:Get Date column value from Excel [duplicate]从 Excel 获取日期列值 [重复]
【发布时间】:2020-04-20 15:30:15
【问题描述】:

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

有一个包含日期列的 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;
}

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

谢谢

【问题讨论】:

  • 你怎么不明白'43941'不是有效的日期格式?在我看来,这是一个“天数”,价值。
  • @Neil 是它的日期格式20/4/2020
  • 但“43941”和“20/4/2020”格式相同。您的代码期望“M/dd/yyyy”形式的值,而字符串“43941”肯定与该模式不匹配。听起来您根本不想将其解析为日期-您想将其解析为 number (整数或双精度),然后使用new DateTime(...).AddDays()
  • 我已经从帖子中删除了无效的 ASP.Net Core 标签,因为它与问题无关,并且 Excel 无法在服务器上正常运行。

标签: c# excel datetime .net-core


【解决方案1】:

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

使用DateTime.FromOADate(Double)方法

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

【讨论】:

  • 我怀疑这可能是正确的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 2016-11-09
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多