我用OleDb方式Insert数据到Excel中,然后添加一行,然后再用OleDb方式Select读取数据,为什么新增的一行读不出来?string connString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
DataTable table = OleDbHelper.GetExcelTables(connString);
if(table == null || table.Rows.Count <= 0)
  {
return null;
   }string cmdText = "select * from [" + table.Rows[0]["TABLE_NAME"].ToString() + "]";
DataTable dt = OleDbHelper.FillDataTable(connString, cmdText);
这个dt总是刚才Insert进去的行数,新增的行读不出来,这是为什么啊?

解决方案 »

  1.   

    OleDbHelper.FillDataTable函数里是这样的
    OleDbCommand cmd = new OleDbCommand();
    using(OleDbConnection conn = new OleDbConnection(connString))
    {
       DataTable dt = new DataTable();
       cmd.Connection = conn;
       cmd.CommandText = cmdText;
       OleDbDataAdapter sda = new OleDbDataAdapter(cmd);
       sda.Fill(dt);
       cmd.Parameters.Clear();
       sda.Dispose();
       return dt;
    }
      

  2.   

    http://www.5i3gp.cn/blog/post/127.html
      

  3.   

    xwpxly(天藍可凡)提供的链接好像不能解决我的问题,不过还是很感谢你
      

  4.   

    参看
    http://www.codeproject.com/csharp/excel_using_oledb.asp
      

  5.   

    造成这种原因,可能是添加完数据后,并没有真正写入到文件中。你可以在写完后,关闭一下connection,然后再打开,在进行读取,看看是否正确。
      

  6.   

    Knight94(愚翁) 
    这个我看过,也没有说到这个问题
      

  7.   

    造成这种原因,可能是添加完数据后,并没有真正写入到文件中。你可以在写完后,关闭一下connection,然后再打开,在进行读取,看看是否正确。=====================================================
    我肯定是关闭了connection了,甚至我关掉程序,再打开然后读取,还是不行
      

  8.   

    你到excel源里看一下是否确实数据insert进去了
      

  9.   

    insert 进去的数据我是可以读取到的
    就是后来我手工编辑添加的行读取不到!
      

  10.   

    我手工在Excel里添加一行,肯定是添加进去的阿
      

  11.   

    改一下连接字符串:string connString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties=\"Excel 8.0;HDR=No\"";
      

  12.   

    我手工在Excel里添加一行,肯定是添加进去的重新连接,找不到?不可能吧?