簡體   English   中英

C#沒有從電子表格中讀取excel日期

[英]C# not reading excel date from spreadsheet

我使用Microsoft.Office.Interop.Excel上傳了一個excel電子表格。 當我嘗試讀取具有日期值的單元格以將其插入到我的數據集中時,它不被識別為日期並且它作為隨機數出現? 這是我引用單元格的方式:

Excel.Range startDate = objsheet.get_Range("C1:C" + lastUsedRow, System.Type.Missing);
double dbl = Convert.ToDouble(startDate);
DateTime conv = DateTime.FromOADate(dbl);
(row[3] = ((Microsoft.Office.Interop.Excel.Range)objsheet.Cells[rowIndex, 4]).Value2;)

來自https://stackoverflow.com/a/4538367/1397117

您需要使用DateTime.FromOADate將日期格式從OLE自動化轉換為.net格式。

 double d = double.Parse(b); DateTime conv = DateTime.FromOADate(d); 

我回應下面的建議回答使用.Value而不是.Value2

row[3] = Convert.ToDateTime(((Microsoft.Office.Interop.Excel.Range)objsheet.Cells[rowIndex, 4]).Value2.ToString());

可以為你做,看看這個林肯

在我必須從excel讀取數據的項目中,我創建了一個方法,它將單元格文本作為輸入,將C#DateTime作為輸出。

public DateTime ReadDateFromExcel(string dateFromXL)
{
    Regex dateRegex = new Regex("^([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$");
    DateTime dtParam = new DateTime();            
    if (!DateTime.TryParse(dateFromXL, out dtParam))
    {
        double oaDate = 0;
        if (Double.TryParse(dateFromXL, out oaDate))
        {
            dateFromXL = DateTime.FromOADate(oaDate).ToString("MM/dd/yyyy");
            if (!dateRegex.IsMatch(dateFromXL))
            {
                Console.Writeline("Date not in correct format");
            }
            else
            {
                dtParam = readDateFromExcel(dateFromXL);
            }
        }
        else
        {
            Console.Writeline("Date not in correct format");
        }
    }
    else
    {
        Console.Writeline("Date is in correct format");
    }
    return dtParam;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM