C#获得Excel值date

我需要检索date的excel列。 我的第一列'A'值被格式化为这个6/20/2016 10:44 。 我用这种格式检索列“A”没有问题

 using DocumentFormat.OpenXml; double d = double.Parse(theCell.InnerText); DateTime conv = DateTime.FromOADate(d).Date; 

我的第二列'B'被格式化为6/20/2016. 没有时间,只是约会。 但我的问题是当我尝试下面的代码:

 using DocumentFormat.OpenXml; double d = double.Parse(theCell.InnerText); DateTime conv = DateTime.FromOADate(d).Date; 

theCell.InnerText值是1455

我有不同的价值。 该值变为12/25/1903 12:00:00 AM

如何检索这种date格式6/30/2016 Excel值?

我从这里find一些代码并修改它: 从excel文件中打开xml读取

我正在考虑Hambone在考虑的事情,即Excel单元格中有其他内容,或者你没有阅读你认为自己的单元格。

这是我正在使用的代码,它适用于我:

 using System; using System.Linq; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; namespace ConsoleApplication1 { class Program { private static void Main(string[] args) { var filePath = @"c:\xyz\stack_c_Sharp.xlsx"; using (var document = SpreadsheetDocument.Open(filePath, false)) { var workbookPart = document.WorkbookPart; var workbook = workbookPart.Workbook; var sheets = workbook.Descendants<Sheet>(); foreach (var sheet in sheets) { var worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id); var sharedStringPart = workbookPart.SharedStringTablePart; string text; var rows = worksheetPart.Worksheet.Descendants<Row>(); foreach (var row in rows) { Console.WriteLine(); int count = row.Elements<Cell>().Count(); foreach (Cell theCell in row.Elements<Cell>()) { text = theCell.CellValue.InnerText; double d = double.Parse(theCell.InnerText); DateTime conv = DateTime.FromOADate(d).Date; Console.Write(text + " "); Console.Write(conv + " "); } } } Console.ReadLine(); } } } }