在.NET中使用ExcelLibrary时,数据无效

我需要从xls文件的单元格中读取DateTime,但单元格内容无效,而不是返回内容作为date或string,它返回一个数字。 读取文件的代码:

using System.IO; using ExcelLibrary.SpreadSheet; namespace XLSX_reader { class Program { private static ExcelDocument XlsDocument { get; set; } static void Main(string[] args) { var inputStream = new MemoryStream(File.ReadAllBytes("d:\\Work\\Flexportal_Other\\Importers\\11-2016_Uitzendrapportage_SRS_Personeel_85873112442611460665848.xls")); XlsDocument = new ExcelDocument(inputStream, null); Cell cell1 = XlsDocument.GetCell(6, 4); XlsDocument.GetCell(5, 7); var date = ExcelDocument.ParseDateTime(cell1); } } } 

ExcellDocument类:

 namespace XLSX_reader { public class ExcelDocument { public ExcelDocument(MemoryStream stream, string sheetName = null) { Workbook = LoadWorkbook(stream); if (Workbook == null) { throw new InvalidOperationException("err"); } Worksheet = LoadWorksheet(sheetName); } public Worksheet LoadWorksheet(string sheetName = null) { if (Workbook == null) { throw new InvalidOperationException( "##(Load workbook before loading worksheets)(Open eerst een werkboek alvorens een werkblad te openen)##"); } Worksheet = sheetName != null ? Workbook.Worksheets.FirstOrDefault(ws => ws.SheetType == SheetType.Worksheet && ws.Name == sheetName) : Workbook.Worksheets.FirstOrDefault(ws => ws.SheetType == SheetType.Worksheet); if (Worksheet == null) { throw new InvalidOperationException("##noWorksheetLoaded##"); } RowIndexMin = Worksheet.Cells.FirstRowIndex; RowIndexMax = Worksheet.Cells.LastRowIndex; _rowIndex = RowIndexMin - 1; return Worksheet; } public Cell GetCell(int row, int column) { return Worksheet.Cells[row, column]; } } } 

xls看起来像这样: 在这里输入图像说明

细胞的读数如下所示: 在这里输入图像说明

所以结果是42443,不是date或任何东西。 你有什么想法,为什么发生这种情况,我该如何解决? 谢谢

Excel将date存储为数字,特别是自1900年1月1日以来的天数。Microsoft文章

Excel将所有date存储为整数,并将所有时间存储为小数部分。 有了这个系统,Excel可以像其他任何数字一样添加,减less或比较date和时间,所有的date都可以通过使用这个系统来操作。

在这个系统中,序列号1表示1/1/1900 12:00:00 am。时间以.0和.99999之间的十进制数字forms存储,其中.0是00:00:00和.99999是23:59: 59。 date整数和时间小数可以组合起来,以创build具有小数和整数部分的数字。 例如,号码32331.06代表date和时间7/7/1988 1:26:24 am