我用C#读EXCELL 表格时遇到下面问题:
   如果一列中有以下情况:
              1,2,3,4
              1,2
              1
              22
    表格属性都是 “常规”
   我用如下语句实现表格到数据集的转化:
 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            strExcel = "select * from [sheet1$] ";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
    
            myCommand.Fill(dataSet1, "[sheet1$]"); //动作测试表填入
//动作测试数据集:dataSet1中
    但是读“1”和“22”所在的单元格的字符串时,得到该单元格的值是空的。不能取出其值。但是如果在“1”和“22"前加”'“ 单引号。则不会出现这种问题
   请高手指教。谢谢!!!!
    

解决方案 »

  1.   

    你直接读取DataSet的数据不就行了吗?至于有空的记录你可以用where筛选下..不明白你的意思.
      

  2.   

    你所说的读是不是取你现在的dataSet1中的值 ?没试过,但我想也是要加上"'"这个的,因为一个DATATABLE中的一个COLUMU的类型是不会出现CHAR和NUMERIC吧。
      

  3.   

    是因为读取时,dataset不能正确的分配列表的类型,在程序中不好写,可以在Excel里选择要传入的列,然后选择工具栏上的数据-->分列,会有一个新窗口,几个下一步之后,会有一个转换类型的窗口,在里面选择转为文本,确定保存就可以了。
    然后使用程序读取就可以读出来了楼主记得多给些分啊
      

  4.   

    将excel绑定到datagrid中,然后去判断哪个格子是空值就行拉。
      

  5.   

    连接字符串改为
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'
      

  6.   

    按照你的写法就是
    这句:
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
    改成:
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
      

  7.   

    直接读sheet表的 xl.usedRange.Rows.count  不行么?
      

  8.   

    livode是正解!
                //"HDR=Yes;" indicates that the first row contains columnnames, not data
                //"IMEX=1;" tells the driver to always read "intermixed" data columns as text
      

  9.   

    理论上这种方法是可行的:
    //"IMEX=1;" tells the driver to always read "intermixed" data columns as text如果还会出现空,可以参考下面的处理空值的方法:
    http://www.cnblogs.com/Roger52027/archive/2006/12/28/606016.aspx
      

  10.   

    楼主,你有没有access导入execl的代码啊,我现在急啊.帮帮忙啊
      

  11.   

    解决方法:1.在导入数据连接字符串中,将IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Data.xls";Extended Properties="Excel 8.0;HDR=Yes;IMEX=1; ”
    2.
    注册表修改内容如下:在HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Excel有一个TypeGuessRows值,预设是8,表示会先读取前8列来决定每一个栏位的型态,所以如果前8列的资料都是数字,到了第9列以后出现的文字资料都会变成null,所以如果要解决这个问题,只要把TypeGuessRows机码值改成0,就可以解这个问题了。