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