采用数据库连接方式
sProviderStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + EXCEL_FILENAME  + ";Extended Properties=Excel 8.0" ;cmdExcel.Parameters.Add("@路由",OleDbType.LongVarChar,0,"路由");

解决方案 »

  1.   

    yehutxt:同志!现在找到什么门路没?一定要用EXCEL的类库来操作吗?
      

  2.   

    我以前用没有问题,但现在换了一种方法,就出现这种问题System.Data.OleDb.OleDbConnection oleDbConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+docRoot+"\\"+strFileName+";Extended Properties=Excel 8.0;");
    oleDbConnection.Open();
    DataTable schemaTable = oleDbConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null); //DataTable schemaTable = oleDbConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"});
    DataSet ds = new DataSet();
    for(int i = 0 ; i < schemaTable.Rows.Count ; i ++){
    string sql = "SELECT * FROM [" + schemaTable.Rows[i]["TABLE_NAME"].ToString() +"]";
    System.Data.OleDb.OleDbDataAdapter ada = new System.Data.OleDb.OleDbDataAdapter(sql, oleDbConnection);
    ada.Fill(ds, "[" + schemaTable.Rows[i]["TABLE_NAME"].ToString() +"]");
    }
      

  3.   

    看看这篇文章,http://support.microsoft.com/kb/189897/EN-US/但这个不是我想要的解决办法,我试过了,好像不行,因为我以前导入excel数据都没有
    问题,现在才发现,不知是什么原因
      

  4.   

    老兄,确实通过修改注册表TypeGuessRows=16可以解决这个问题,但是这个有点麻烦,要去修改web服务器上的这个设置,我这个比较麻烦,不可能去为每个客户修改这个,只能从程序中来解决,不知道你的应用是什么情况,如果就一套系统,则这种方式还是可取的
      

  5.   

    我是单机系统!但改了还需要是不行,TypeGuessRows是注册表哪个键中的落,有几个TypeGuessRows键?
      

  6.   

    就一个吧,你看看http://support.microsoft.com/kb/189897/EN-US/
    这篇文章,这里有详细的说明,如果是单机版,这中方案可以
      

  7.   

    Data truncated to 255 characters with Excel ODBC driver
    http://support.microsoft.com/kb/189897/EN-US/
      

  8.   

    兄弟,告诉你,已经找到问题原因何在,用Ado读取数据时,对于超过255个字符的单元格,必须在前1-8列,大于255个字符的单元格第一行数据不能小于255个字符,否则系统就不能识别。
      

  9.   

    兄弟,确实是这样!但如果用EXCEL的库函数填写单元格会出现这种情况吗?你试了没?