在asp.net中导入Excel文件时丢失的date格式C#

date格式是1:55:25 AM在Excel文件中,阅读使用ExcelReaderFactory.CreateBinaryReader后,我得到了0.0451388888888889。

Excel内部以十进制格式存储数据,并将逻辑应用于该值以显示date。 不幸的是,从格式到date格式的转换并不总是直截了当的。

我会build议打开Excel文件使用OleDb读取到数据集。 这样做可以保留电子表格中显示的格式的数据。

有许多关于如何使用OleDb读取Excel的精彩文章。

你可以从这个开始: http : //codehill.com/2009/01/reading-excel-2003-and-2007-files-using-oledb/

干杯!

使用OleDb读取数据,如下所示:

string dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";" OleDbConnection newConn = new OleDbConnection(dsn); string tableName= "MyGlobalNamedRange"; string sqlText = String.Format("SELECT * FROM [{0}]", tableName); IDbCommand cmd = connection.CreateCommand(); cmd.CommandText = sqlText; IDataReader res = cmd.ExecuteReader(); 

有关使用DataReaders的信息,请参阅知识库文章

当Excel将时间值识别为时间值时,它将时间部分存储在数字的小数部分中,并将date的date部分存储为数字的整数部分。 Excel将所有数值存储为双精度浮点值,这就是为什么您得到不准确的结果。 但是,为什么你得到0.0451388888888889而不是像0.080150462962963是一个谜。 您可以尝试通过在空白单元格中指定一个神秘date值(例如=A3 )的简单公式来查看Excel中的基础值。 然后将该单元格格式化为带有小数位的数值,并查看它提供的数字。 如果基础值也是0.04513 …那么问题出在源数据而不是ExcelDataReader库。