【问题标题】:The day and month value is getting flipped when excel is exported to a datatable将excel导出到数据表时,日期和月份值会翻转
【发布时间】:2017-07-18 09:51:26
【问题描述】:
string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", path + new_filename);

OleDbConnection objConn = null;
System.Data.DataTable dt_sheet = null;
objConn = new OleDbConnection(connectionString);
objConn.Open();

dt_sheet = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

string SheetName = dt_sheet.Rows[0]["TABLE_NAME"].ToString();

if (dt_sheet.Rows.Count > 0)
{
    if (dt_sheet.Rows[0]["TABLE_NAME"].ToString() == Handle.ToString(SheetName))
    {
        string query = String.Format("select * from [{0}]", SheetName);
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);

        DataTable dt = new DataTable();

        dataAdapter.Fill(dt);

        //rest code 
    }
}

如果我执行 data->text to column->text,日期不会翻转,但在我的情况下,日期将强制以日期格式输入。我已经在stackoverflow中完成了日期翻转问题,但它只占用了一个字段。我想在数据表中获得整个 excel 而不会翻转日期。有什么方法可以做到这一点。另一个问题是,有时在 excel 中的日期可以仅作为文本上传,所以在后面的代码中我不能使用强制功能来翻转日期。 我正在使用 Visual Studio 2013,C#

【问题讨论】:

  • 我能建议的最好的办法是遍历工作表中的结果,并在填写数据表之前根据需要评估和重新格式化日期。
  • 如果您可以为此创建一个minimal reproducible example,那将非常有用。
  • @Enigmativity 你是在跟我讨论我的建议吗?
  • @Ortund - 不,那是对 OP 的评论。
  • @Enigmativity 实际上代码并没有做太多,它只是从 excel 中获取 dt 中的值,以便在检查 dt 的每个值后可以将其上传到数据库。我使用了一个日期验证器以确保它以正确的格式出现。但是随着日期的翻转,日期将通过月份验证来验证。

标签: c# .net excel datetime


【解决方案1】:

假设日期时间值都在电子表格的同一列中,遍历行并根据需要重新格式化日期应该相对容易:

if (dt_sheet.Rows.Count > 0)
{
    if (dt_sheet.Rows[0]["TABLE_NAME"].ToString() == Handle.ToString(SheetName))
    {
        foreach (DataRow row in dt_sheet.Rows)
        {
            row[3] = (DateTime)row[3].ToString("mm/dd/yyyy") as DateTime;
        }
        // The rest of your code goes here.
    }
}

我没有时间测试这段代码,但它应该足以让你继续前进。

【讨论】:

  • 对不起,但它给出了一个错误“方法'Tostring'没有重载需要'1'参数”。
  • row[3] 是一个object。您需要先将其转换为DateTime,然后调用ToString 方法。
  • 尝试在行尾添加as DateTime;。 `(DateTime) 演员应该照顾这个虽然
猜你喜欢
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
相关资源
最近更新 更多