C#没有从电子表格中读取exceldate

我上传了一个使用Microsoft.Office.Interop.Excel的Excel电子表格。 当我尝试读取具有date值的单元格,以便将其插入到我的数据集中时,它不被识别为date,并且以随机数的forms出现? 这是我指的单元格的方式:

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将date格式从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()); 

可以为你做,看看这个lin k。

在我的项目中,当我不得不从Excel中读取数据时,我创build了一个以单元文本作为input并将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; }