none
通过OLEDB方式将EXCEL文件的数据读取到DataGridView的时候出现数据精度问题,求解决! RRS feed

  • 问题

  • 先贴代码,代码很普通:

       private DataSet ImportExcel(string filename, string sheet)
            {
                DataSet ds = new DataSet();
                using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=0\";Data Source=" + filename))
                {
                    conn.Open();
                    string strGetDataFromExcel = "SELECT * FROM [" + sheet + "]";
                    OleDbCommand oleDbCmdExcel = new OleDbCommand(strGetDataFromExcel, conn);
                    OleDbDataAdapter da = new OleDbDataAdapter(oleDbCmdExcel);
                    DataTable FromExcel = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, new object[] { null, null, sheet, null });

                    if (IsSame(Model(), FromExcel))
                    {
                        da.Fill(ds);
                    }
                    else
                    {
                        ds = null;
                        MessageBox.Show("表结构不一致", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    conn.Close();
                }

                return ds;
            }

    然后是EXCEL文件的数据:

    最后就是导入后的效果:

    如上图所示,部分数据后面出现尾数,不明白为什么会这样,希望各位懂的兄弟指导一下,谢谢!

    PS:有这样一种情况,我先将需要导入的EXCEL文件先打开,然后再选择导入,这样做就不会出现问题,而只在程序里直接选择导入就会出现这样的精度问题。

    2012年5月26日 7:13

答案

  • 我觉得这个 是数据本身的问题。

    为了判断这个, 你先设置excel里的数据格式,将其设置为13位小数(因为datagridview里有13位小数),然后看看你的excel里的数据是不是也是这样。 


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年5月28日 5:09
    版主