【问题标题】:Unable to convert dates from Excel无法从 Excel 转换日期
【发布时间】:2016-01-06 21:24:09
【问题描述】:

我开发了一个 C# 应用程序来从 Excel 文件中读取数据。 "dd/MM/yyyy" 格式的日期也很少,我可以将它们转换为 DateTime 对象。但是,当我将相同的代码放在 Web 服务器上时,它会以 "MM/dd/yyyy" 格式读取 Excel 日期。我检查了服务器上的区域设置,它与我的本地计算机相同,即 "en-AU"。下面是转换日期的函数:

private DateTime? GetDate(string value)
    {
        if (value.Contains('/') || value.Contains('-'))
        {
            DateTime date = new DateTime();

            string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
                    "dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy", '"d-MMM-yyyy", "dd-MMM-yyyy", "d-MMM-yy", "dd-MMM-yy", "MM/dd/yyyy", "M/dd/yyyy", "M/d/yyyy"};

            if (DateTime.TryParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
            {
                return date;
            }
            else
            {
                return null;
            }
        }
        else
        {
            try
            {
                double add = Convert.ToDouble(value);
                DateTime date = DateTime.FromOADate(add);

                return date;
            }
            catch
            {
                return null;
            }
        }

    }

我正在使用 OleDBDataAdapter 将 Excel 文件读入 DataTable 对象。该函数解析所有可能的日期格式,但它始终返回 null。

可能是什么问题?

【问题讨论】:

    标签: c# excel date


    【解决方案1】:

    尝试将CultureInfo.InvariantCulture 替换为new CultureInfo("en-AU")。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2015-09-07
      • 2021-07-14
      • 2019-08-05
      相关资源
      最近更新 更多