如题,比如excel文件有50行记录,但是我读出来的table有70行。  现在发现原因是当你在那个表里面曾经写入过70行记录,保存一下,再删掉后面20行,但是读出来的table就仍然有70行,但是每个格子的值都是空的。
请教如何解决这种问题?
//源的定义
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";//Sql语句
//string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
string strExcel = "select * from   [sheet1$]";//定义存放的数据表
DataSet ds = new DataSet();//连接数据源
OleDbConnection conn = new OleDbConnection(strConn);conn.Open();//适配到数据源
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName); conn.Close();

解决方案 »

  1.   

    用OleDbDataReader reader = cmd.ExecuteReader();试下
      

  2.   

    你删掉后面20行后,Excel数据提供方能判断以下情况吗:
    1、故意放20条所有字段都是空的记录?
    2、删除20条记录?因为不能,比较安全的做法就是返回20条空记录。
    如果你确定空记录非法,那么倒入到ds后删除空记录就是了。
      

  3.   

    那怎么比较方便的删除掉空的行和列呢。。  dataset有提供方法判断么?要是没有就只好自己写循环来判断了。。好麻烦啊
      

  4.   

    http://hytgx.blog.163.com/blog/static/331768412010111453516342/
    看吧    我的Blog
    里面有这个问题的解决方案