2013-03-18 48 views
1

我试图插入的行在Excel与OLEDB和问题是:Excel中保持空白单元作为使用的细胞

  • :我插入几排的我的片材的端部。
  • :我打开我的Excel文档,看到我插入的行。
  • :我删除了所有插入的行并重新启动我的应用程序。
  • :该行继续最后一排索引处插入

例如:

  • 排在Excel
  • 插入3020行
  • 删除该行并保存
  • 重启该应用程序并再次插入
  • 行将在行中3021在Excel中

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

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

     cmd1.ExecuteNonQuery(); 
    } 

回答

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(); 
} 
+0

非常感谢,那就是解决方案。 – Sebastien 2013-03-18 16:58:13

+0

+1给我的答案的编程版本。 – rbedger 2013-03-18 16:59:54

1

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

+0

谢谢,这可以帮助我 – Sebastien 2013-03-18 16:58:40