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; }