用C#读取excel表格中的内容,表格如下读取到AM和AN列的时候,读到的内容竟然分别成了  '123$'.GGT  和 '123$'.GGT1谁给解释一下啊~!~!

解决方案 »

  1.   


    就调试跟踪才知道读取出来的跟在Excel表格中的不一样啊。123是文件的名字
      

  2.   


    就调试跟踪才知道读取出来的跟在Excel表格中的不一样啊。123是文件的名字
    没有出现错误,只是读出来的值与在excel表格中的不一样啊。
      

  3.   

    本帖最后由 net_lover 于 2011-07-22 10:06:55 编辑
      

  4.   


    嗯,在单元格地址栏里看,有一个GGT后面好像有个空格。其它都一样
      

  5.   

    其它的列都读的很正常,唯独这两个。123是excel文件的名字
      

  6.   

    把excel里AM列的内容改为'GGT试试,就是数据前加半角的单引号。
    或是把那两列的单元格格式设置为普通文本。
      

  7.   


     /// <summary>
            /// 读取EXCEL中所有记录
            /// </summary>
            /// <param name="PhyPath"></param>
            public void GetExcelDataDal()
            {            
                System.Windows.Forms.OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.InitialDirectory = @"C:\Documents and Settings\Administrator\桌面";
                openFileDialog1.Filter = "xls files (*.xls)|*.xls";
                openFileDialog1.FilterIndex = 2;
                openFileDialog1.RestoreDirectory = true;
                //openFileDialog1.Multiselect = true;            if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    string filename = openFileDialog1.FileName;//c:\\123.xls                //创建一个数据链接 
                    string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + filename + " ;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";                OleDbConnection myConn = new OleDbConnection(strCon);                DataTable sheetNames = null;
                    
                    myConn.Close();                string SheetName = null;                for (int i = 0; i < sheetNames.Rows.Count; i++)
                    {
                        SheetName = sheetNames.Rows[i][2].ToString();                    break;
                    }
                    SheetName = "[" + SheetName + "]";                myConn.Open();                string strCom = " SELECT * FROM " + SheetName;
                    
                    OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
                   
                    DataSet myDataSet = new DataSet();
                    
                    myCommand.Fill(myDataSet, SheetName);
                    
                    myConn.Close();                DataTable dt = myDataSet.Tables[0];                DataView dv = new DataView(dt);                if (dt.Columns[2].Caption == "标本号")
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            W_ZHXM w_zhxm = new W_ZHXM();
                            w_zhxm.TJH = dt.Rows[i][2].ToString();
                            w_zhxm.ListDyxm = new List<W_DYXM>();                        for (int j = 0; j < dt.Columns.Count; j++)
                            {
                                W_DYXM w_dyxm = new W_DYXM();
                                w_dyxm.YWJM = dt.Columns[j].Caption;
                                w_dyxm.MyValue = dt.Rows[i][j].ToString();
                                w_zhxm.ListDyxm.Add(w_dyxm);
                            }                        W_ZHXM.List_Zhxm.Add(w_zhxm);
                        }
                    }            }
            }
    这是源代码
      

  8.   

    DataSet myDataSet = new DataSet();
                    
    myCommand.Fill(myDataSet, SheetName);在断点跑完上面fill之后  你看看  myDataSet 的放大镜里面的数据是不是对的
      

  9.   

    跟踪了,大部分是正常的。除了上面说的GGT两列与Excel中的不一样。