【问题标题】:Excel kept blank cells as an used cellExcel 将空白单元格保留为已使用的单元格
【发布时间】:2013-03-18 16:27:17
【问题描述】:
我尝试使用 OLEDB 在 excel 中插入行,但问题是:
- :我在工作表末尾插入了几行。
- :我打开我的 excel 文档并看到我插入的行。
- :我删除所有插入的行并重新启动我的应用程序。
- :在最后一行索引处继续插入行
前:
- 在 Excel 中的第 3020 行插入行
- 删除此行并保存
- 重启应用并再次插入
- excel 中的行将位于第 3021 行
public void Insert(字符串文本,Excel.Worksheet
ws,字符串列){
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO ["+ws.Name+"$] " +
"([" + column + "]) VALUES(' " + text + " ')", _oleConn);
cmd1.ExecuteNonQuery();
}
【问题讨论】:
标签:
c#
excel
c#-4.0
oledb
oledbcommand
【解决方案1】:
可能是工作表将这些列的 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();
}
【解决方案2】:
删除行中的数据不会删除 Excel 中该行存在的记录。您可以通过选择整个事物(单击行号)然后右键单击并选择“删除”来删除该行。