C# Oledb从Excel工作表中读取假值

C# Oledb从Excel工作表中读取假值,c#,winforms,oledb,C#,Winforms,Oledb,我正在尝试使用oledbReader阅读Excel工作表,该工作表已在Windows资源管理器中打开,代码如下 System.Data.OleDb.OleDbConnection mCon; mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + openFileDialog1.FileName + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";

我正在尝试使用oledbReader阅读Excel工作表,该工作表已在Windows资源管理器中打开,代码如下

System.Data.OleDb.OleDbConnection mCon;
mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + openFileDialog1.FileName + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";");
strSelectQuery = "SELECT TOP 20 * FROM [$Sheet1]";
        if (mCon.State == ConnectionState.Closed)
        {
            mCon.Open();
        }
        DataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSelectQuery, mCon);
        DataAdapter.Fill(mDTable);
        DataAdapter.Dispose();
        mCon.Close();
这里写着

 03-Aug-12 as 41124 // Excel Column has Genral format
 07:29:19 as 0.31202546296 //Excel Column has Genral format
 359307046362750 as 3.5930704636e+014 // Excel Column has Number Format with Decimal place 0
如果excel文件已关闭,它将以正确格式读取值。
为什么会这样做?

有什么答案吗??有什么线索吗??仍在等待其他人响应。如果打开一个普通Excel并键入值03-Aug-12,将“常规”作为数字格式,它将自动更改数字格式,但如果再次尝试将同一单元格的格式设置为“常规”,您将发现结果为41124,它是一个excel属性。因此,在使用时,它总是首选将数字格式设置为文本Excel@RohitAgrawal我无权更改excel。是否有任何解决方法可供正确阅读。为什么文件关闭时阅读效果良好?我想您应该使用工作表对象,在工作表处于打开状态时遍历excel的行和列,而不是使用OLEDB或将整个工作表的数字格式设置为文本格式。