无法正确使用office interop删除excel中的行

//我试图删除一些在Excel中的行。 但是我面临的问题是它并没有删除所有的logging,删除了一些行并留下了剩余的行。

for (int i = 2; i <= lastRow; i++) { Array MyValues = (Array)MySheet.get_Range("A" + i.ToString(), "AN" + i.ToString()).Cells.Value; if (Convert.ToString(MyValues.GetValue(1, 1)) == "" && Convert.ToString(MyValues.GetValue(1, 2)) == "" && Convert.ToString(MyValues.GetValue(1, 3)) == "") { break; } else { Excel.Range cells = MySheet.get_Range("A" + i.ToString(), "AN" + i.ToString()); cells.Delete(); } } 

难道你在if语句中使用break而不是continue?

另外,将循环与删除组合在一起时必须小心。 比方说你的循环删除第5行,现在第6行将成为第5行,循环将跳过它。 这可能是最新发生的事情。

我想这是因为你正在通过迭代删除。

所以你删除,例如,第一行,但随后细胞向上移动。 所以你的“我”现在是2,而你跳过了第一行。

固定:

cells = MySheet.get_Range(“Ax”,“ANx”);

“x”是您想要从中删除行的地方

通过向后循环解决我的问题。

 ie for(i=lastrow;i>=2;i--) { //delete }