解决方案 »

  1.   

    晕了,至于重新开一贴吗
    就是最后一行新增行,里面是null,不能ToString()
    ToString()之前一定要先判断是否为null
      

  2.   

    我新增的为什么为null啊,不应该啊。
      

  3.   

    还是存在问题,我第五行明明输入进去了数据,就是4 yz 那一行,但是确认为那一行为空?
     for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        if (item.Cells[i].Value != null)
                            dr[0] = item.Cells[i].Value.ToString();
                    }
      

  4.   

    还有,你的4 yz那一行的索引是3
    行数是从0开始的
    索引是4的那一行,数据是null.
      

  5.   

    1.你说的对的,那行是有数据的并且也添加到了dt上了,问题出在了这里:
               OleDbCommandBuilder odcb = new OleDbCommandBuilder(myDataAdapter);
                odcb.QuotePrefix = "[";   //用于搞定INSERT INTO 语句的语法错误
                odcb.QuoteSuffix = "]";
                myDataAdapter.Update(myDataSet, "[Sheet1$]"); //更新数据集对应的表
                dataGridView1.DataSource = myDataSet.Tables[0].DefaultView; //显示到datagridview;
    2.在dt添加完毕后,执行上面代码,意图是要更新此dt到excel中,看这句:
    myDataAdapter.Update(myDataSet, "[Sheet1$]"); //更新数据集对应的表
    也就是我将myDataSet更新过去,所以dt需要引用myDataSet,也解释了为什么是第二句而不是第一句,终于搞清楚点了。
    //DataTable dt = new DataTable();
    DataTable dt = myDataSet.Tables[0];  
      

  6.   

    还真的没有试过用OLEDB的insert语句插入excel
    使用excel的dll,在新建/打开的时候,是可以直接对单元格进行操作的
    当然读取的时候,因为网上的代码都是用OLEDB,所以只能按数据库读,不知道直接读单元格怎么个读法
    还是换NPOI吧,可以直接循环单元格进行操作,不要老想用简便的办法直接把整个datatable扔进excel里了...
      

  7.   

    我在用webbrowser,有木有高手指点。vs版本2012.office版本2007,就是不能在窗口里打开,我查了两天了,都市c#.net的方法。需要仔细研究下。