如何在Excel中读取DateTime Interop C#

可能重复:
读取date时间值从Excel工作表中读取

我正在尝试使用C#中的Interop在Excel电子表格中读取date时间值。 我有时间在我的工作表的“C”栏。 我的代码如下:

public void addTime(Microsoft.Office.Interop.Excel.Workbook workbook) { Excel.Worksheet ws = (Excel.Worksheet)workbook.Worksheets.get_Item("Time Series"); Excel.Range range = ws.UsedRange; int num = 0; for (int row = 1; row <= range.Rows.Count; row++ ) { String dtString = ((Excel.Range)ws.Cells[row, "C"]).Value2.ToString(); DateTime dt = Convert.ToDateTime(dtString); this.addEdgeInstance(dt); } } 

然而这在当时并没有被读懂。 读取string的工作,但转换function不起作用。 我是否以不同的方式阅读价值观? 数值可以变化吗? (IE:我可以input“11/11”还是“2011/11/11”,因为在Excel中工作时,Excel将这两个条目都识别为valie DateTime值)?

有哟发芽。 我稍微修改了代码,以反映帮助程序转换函数的用法。 转换发生在这一行:DateTime dt = DateTime.Parse(ConvertToDateTime(dtString)); 随意根据需要修改帮助函数来返回一个DateTimevariables而不是一个string,但是这基本上是一样的。 希望这可以帮助!

 public void addTime(Microsoft.Office.Interop.Excel.Workbook workbook) { Excel.Worksheet ws = (Excel.Worksheet)workbook.Worksheets.get_Item("Time Series"); Excel.Range range = ws.UsedRange; int num = 0; for (int row = 1; row <= range.Rows.Count; row++ ) { String dtString = ((Excel.Range)ws.Cells[row, "C"]).Value2.ToString(); DateTime dt = DateTime.Parse(ConvertToDateTime(dtString)); this.addEdgeInstance(dt); } } public static string ConvertToDateTime(string strExcelDate) { double excelDate; try { excelDate = Convert.ToDouble(strExcelDate); } catch { return strExcelDate; } if (excelDate < 1) { throw new ArgumentException("Excel dates cannot be smaller than 0."); } DateTime dateOfReference = new DateTime(1900, 1, 1); if (excelDate > 60d) { excelDate = excelDate - 2; } else { excelDate = excelDate - 1; } return dateOfReference.AddDays(excelDate).ToShortDateString(); }