本帖最后由 tanwei6666 于 2011-10-26 15:35:34 编辑

解决方案 »

  1.   


    对于第一条:处理后的数据有没有办法识别呢?
    对于第二条:如果我倒错了,那么新建的.xlsx的应该也是错的,毕竟两个Excel显示的数据是一模一样的,这一条的可能性 可能不大;
    对于第三条:不太理解,不过就算数据类型出问题了,那么也不是所有的类型都错吧。。那个错误数据里的图,一个数据都对不上
      

  2.   

    迈达斯(MIDAS)如果不是你自己写的多话 出问题就没办法了 只有自己写一个 要是自己写的把代码贴出来 
      

  3.   


    迈达斯(MIDAS)是工程应用里的一个专业软件,我的任务就是把里面的软件里的数据读出来,然后再进一步的分析;
    百度百科:http://baike.baidu.com/view/648584.htm
    公司主页:http://www.midasuser.com.tw/index.aspx
      

  4.   

    你这个很纠结啊 导出excel表里的数据 你自己写程序导出撒 
      

  5.   

    回复楼上:从别人的软件里重写一个导出Excel的数据的方法,貌似有点困难吧?我先去查查资料……
      

  6.   

    把你导出的excel另存为逗号格式的文件看看。
      

  7.   

    从别人的网站上导出的都是html格式的,你要把他当成excel导入肯定有问题
      

  8.   


    是把Excel另存为.CSV文件吗?结果如下:
    貌似没有什么特别奇怪的地方啊。我还是把我的从Excel导入到datagridview的代码发出来吧,看看是不是这出了问题:/// <summary>
            /// 从Excel中导入数据到表格中
            /// </summary>
            /// <param name="p"></param>
            /// <param name="dataGridViewX1"></param>
            private void EcxelToDataGridView(string filePath, DataGridViewX dataGridViewX1)
            {
                string strConn;
                if (filePath.EndsWith(".xls"))
                {
                    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath +
                        ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'";
                }
                else if (filePath.EndsWith(".xlsx"))
                {
                    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath +
                        ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'";
                }
                else
                {
                    return;
                }
                OleDbConnection conn = new OleDbConnection(strConn);
                try
                {
                    conn.Open();
                }
                catch
                {
                    MessageBox.Show("格式错误,请打开Excel文件");
                    return;
                }
                string SelectCommandText = "select * from [sheet1$]";
                OleDbDataAdapter adapter = new OleDbDataAdapter(SelectCommandText, conn);
                DataSet ds = new DataSet();
                adapter.Fill(ds, "ExcelTable");            //根据DataGridView的列构造一个新的DataTable
                DataTable dt = new DataTable();
                foreach (DataGridViewColumn dgvc in dataGridViewX1.Columns)
                {
                    if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
                    {
                        DataColumn dc = new DataColumn();
                        dc.ColumnName = dgvc.DataPropertyName;
                        //若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable
                        //dc.DataType = dgvc.ValueType;
                        dt.Columns.Add(dc);
                    }
                }            //根据Excel的行逐一对上面构造的DataTable的列进行赋值
                foreach (DataRow excelRow in ds.Tables["ExcelTable"].Rows)
                {
                    int i = 0;
                    DataRow dr = dt.NewRow();
                    foreach (DataColumn dc in dt.Columns)
                    {
                        dr[dc] = excelRow[i];
                        i++;
                        //如果Excel里的表格的列数小于dataGridView里的列数
                        if (i == ds.Tables["ExcelTable"].Columns.Count)
                            break;
                    }
                    dt.Rows.Add(dr);
                }
                DataGridViewControl.CopyDTableToGrid(dataGridViewX1, dt);
                DataGridViewControl.CopyDTableToGrid(CurrentGrid, dt);
                conn.Close();
            }
      

  9.   


    不是从别人网站上导出的,我手上有这个软件,这个软件有个功能是把数据导出到Excel的
      

  10.   


    是指select * from [sheet1$] ? 能说具体点吗?
      

  11.   

    这个问题后来解决了,原来是因为我在方法里写的是“select * from [sheet1$]”
    但是实际上Excel里的表格有很多sheet。我是说呢,我读出来的数字这么奇怪,原来是第一层的,但是我的Excel显示的是sheet4做个标记,方便以后遇到同样情况的朋友。
    当然不知道还能不能出现像我这么这么粗心大意的朋友