1

Excel からデータセットにインポートすると、日付形式が変更されます

私のコードは次のとおりです。

DataSet ds = new DataSet();
string myConnStr = "";

if (ds != null)
{
    myConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + "; " + "Extended Properties=\"Excel 12.0;HDR=YES\"";
}
else
{
    myConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FilePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
}

OleDbConnection myConn = new OleDbConnection(myConnStr);
try
{
    OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$] ",myConn);
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = cmd;
    myConn.Open();
    adapter.Fill(ds);
 }
catch
{ }
finally
{
    myConn.Close();
}

Excel から行ごとに読み取っている場合は、ここでは実行できないDateTime.FromOADateを使用でき ます。助けてください

4

1 に答える 1

1

1つの解決策は、IntegerをDatetimeに変換することです

サンプルコードは次のようになります

public DateTime ExcelSerialDateToDT(int nSerialDate)
{

int l = nSerialDate + 68569 + 2415019;
int n = ((4 * l) / 146097);
l = l - ((146097 * n + 3) / 4);
int i = ((4000 * (l + 1)) / 1461001);
l = l - ((1461 * i) / 4) + 31;
int j = ((80 * l) / 2447);
int nDay = l - ((2447 * j) / 80);
l = (j / 11);
int nMonth = j + 2 - (12 * l);
int nYear = 100 * (n - 49) + i + l;

return DateTime.Parse(nMonth + "/" + nDay + "/" + nYear);

 }

私のために働いた....

于 2013-04-11T15:59:34.640 に答える