1

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

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

前任 :

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

公共无效插入(字符串文本,Excel.Worksheet ws,字符串列){

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

        cmd1.ExecuteNonQuery();
    }
4

2 回答 2

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();
}
于 2013-03-18T16:42:32.280 回答
1

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

于 2013-03-18T16:30:24.197 回答