复制date格式单元格到数据表excellibrary

我正在开发一个C#程序,是一个桌面应用程序。 我有一个问题,我正在使用excellibrary来打开一个excel,并将数据复制到一个数据表,但我有一个date格式为mm / dd / yyyy的单元格,但是当我在datagridview中显示数据表时,此信息更改为数字,例如:

02/07/1984 – > 30865

这是我的代码,我希望有人能帮助我!

private DataTable ConvertToDataTable(string FilePath) { string file = FilePath; // open xls file Workbook book = Workbook.Open(file); Worksheet sheet = book.Worksheets[0]; DataTable dt = new DataTable(); // traverse rows by Index for (int rowIndex = sheet.Cells.FirstRowIndex; rowIndex <= sheet.Cells.LastRowIndex; rowIndex++) { Row row = sheet.Cells.GetRow(rowIndex); object[] temparray = new object[row.LastColIndex + 1]; for (int colIndex = row.FirstColIndex; colIndex <= row.LastColIndex; colIndex++) { Cell cell = row.GetCell(colIndex); temparray[colIndex] = cell.Value; } if (rowIndex == 0) { foreach (object obj in temparray) { dt.Columns.Add(obj.ToString()); } } else { dt.Rows.Add(temparray); } } return dt; } 

您看到的数字是OLE自动化date,您需要通过使用DateTime.FromOADate Method将该数字转换为DateTime

 DateTime dt = DateTime.FromOADate(30865); //dt = {02/07/1984 12:00:00 AM} 

要在当前代码中使用该方法,您必须通过每个列的值和date索引,将值parsing为DateTime ,然后将其添加到DataTable