C#解析Excel自定义单元格格式

C#解析Excel自定义单元格格式,c#,excel,datetime,parsing,C#,Excel,Datetime,Parsing,我正在分析Excel文件,并且很难读取自定义单元格格式为dd-mmm-yy的单元格的值。该单元格中的值为09年10月29日(单元格B25)。当我跑的时候 String arrive = Convert.ToString(_worksheets["GENERAL"].get_Range("B25", Type.Missing).Value2); 我得到“40114”作为单元格的值 那么当我尝试 DateTime arrive = Convert.ToDateTime(_worksheets[

我正在分析Excel文件,并且很难读取自定义单元格格式为
dd-mmm-yy
的单元格的值。该单元格中的值为09年10月29日(单元格B25)。当我跑的时候

String arrive = Convert.ToString(_worksheets["GENERAL"].get_Range("B25", Type.Missing).Value2);  
我得到“40114”作为单元格的值

那么当我尝试

DateTime arrive = Convert.ToDateTime(_worksheets["GENERAL"].get_Range("B25", Type.Missing).Value2);
我得到一个错误,声明“当从一个数字进行转换时,值必须是小于无穷大的数字。”

如有任何想法,将不胜感激

谢谢。

似乎您需要该方法,因为就.NET而言,这是一种非标准格式

请尝试以下操作:

var dateTimeStr = _worksheets["GENERAL"].get_Range("B25", Type.Missing).Value2);
var dateTime = DateTime.ParseExact(dateTimeStr, "dd MMM yy");

该页面也可能是书签的良好参考。

该随机数是OLE日期


您可能需要
DateTime.FromOADate
方法。看一看。

如果不想变得困难的话,那将不会很好地转换40114。。。我同意,如果他能够保证以指定的格式提取该值,那么它将起作用,感谢快速响应。当我尝试这个建议时,我收到一个错误,指出ParseExact需要2个参数。我想这就是我说这是我第一次用C#编写任何代码,并为我的无知而深表歉意。你要么a)需要知道excel如何表示日期,并有一个函数将该表示(40114)转换为日期(假设你不能直接这么做)或者b)以格式化字符串的形式提取单元格内容,并使用Noldorin的答案。后者可能更容易,前者几乎肯定更好(更安全)。