Excel将空白单元格保留为旧单元格

时间:2013-03-18 16:27:18

标签: c# excel c#-4.0 oledb oledbcommand

我尝试在OLED中使用OLEDB插入行,问题是:

  • :我在工作表的末尾插入了几行。
  • :我打开我的Excel文档并查看插入的行。
  • :我删除了所有插入的行并重新启动了我的应用程序。
  • :行继续插入最后一行索引

ex:

  • 在excel
  • 的第3020行插入的行
  • 删除此行并保存
  • 重新启动应用并重新插入
  • 行将在excel的第3021行
  

public void Insert(字符串文本,Excel.Worksheet   ws,string column){

        OleDbCommand cmd1 = new OleDbCommand("INSERT INTO ["+ws.Name+"$] " +
                           "([" + column + "]) VALUES(' " + text + " ')", _oleConn);

        cmd1.ExecuteNonQuery();
    }

2 个答案:

答案 0 :(得分:2)

可能是工作表在幕后保留这些列的XML。您当前的代码将行放在工作表的末尾。必须修改代码以删除要放入的行之前的空行,然后添加。一个例子就是:

public void Insert (string text, Excel.Worksheet ws, string column){
    OleDbCommand cmd0 = new OleDbCommand("DELETE FROM ["+ws.Name+"$] where /*column1*/ = '' AND /*column2*/ = '' /*...*/ AND /*columnN*/ = ''", _oleConn);

    cmd0.ExecuteNonQuery();

    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO ["+ws.Name+"$] " +
                       "([" + column + "]) VALUES(' " + text + " ')", _oleConn);

    cmd1.ExecuteNonQuery();
}

答案 1 :(得分:1)

删除行中的数据不会删除该行存在的Excel记录。您可以通过选择整个行来删除行(单击行号)然后右键单击并选择“删除”。