string Path = "c:/Book1.xlsx";
            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;
            DataSet ds = null;
            strExcel = "select * from [sheet1$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            ds = new DataSet();
            myCommand.Fill(ds, "table1");
            MessageBox.Show( ds.Tables["table1"].Rows.Count.ToString());
在执行到conn.Open();时出错!说  “外部表不是预期的格式。”
怎么回事??
我用的是vs2008+office2007
引用加了~

解决方案 »

  1.   

    路径问题 
    string Path = @"c:\Book1.xlsx";
      

  2.   


     string Path = "c:\\Book1.xlsx";或者 string Path = @"c:\Book1.xlsx";
      

  3.   

    路径问题
    正确写法:C:\\Book1.xlsx  
      

  4.   

    还有一种可能是你的Excel表格不是标准的Excel表格,可能里面含有别的符号什么的
    我也遇到过这样的一种情况,我是通过写文件的形式先把数据写进Excel,再用这种方式读的时候,就报这个错误
    建议改下路径试下,如果不行,新建一个Excel,不要拷贝原来Excel的数据,自己写数据进去,再试试
      

  5.   

    把链接字符串改成我这个,然后看看你驱动里有没有Microsoft.ACE.OLEDB.12.0,没有就去下一个,就可以读了。            string Path = "c:/Book1.xlsx";
                string strConn =@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +  Path+ ";" + "Extended Properties=Excel 8.0;";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                string strExcel = "";
                OleDbDataAdapter myCommand = null;
                DataSet ds = null;
                strExcel = "select * from [sheet1$]";
                myCommand = new OleDbDataAdapter(strExcel, strConn);
                ds = new DataSet();
                myCommand.Fill(ds, "table1");
                MessageBox.Show( ds.Tables["table1"].Rows.Count.ToString());
      

  6.   

    你EXCEL的格式跟数据库里面的一样不?
      

  7.   

    Microsoft.Jet.OLEDB.4.0;  2007 用这个不行了  见13楼
      

  8.   

    可以参考一下:
    http://blog.csdn.net/Mittermeyer/archive/2008/04/05/2253152.aspx
      

  9.   

    excel内容问题........  里面并不是单纯的一列一列的值,就会报这个错...