Excel互操作迭代通过行,并有条件地删除整行缺less一些行

我正在build立一个Excel自动化程序,我需要有条件地删除特定的行。 例如,我有224行特定的发布者。 在这224行160行是无效的,我需要删除160.但是,当我遍历行并有条件地删除160行只有138被删除。 22行始终保留在表单中。 我找不到原因是什么? 代码写在下面。

List<string> removeList = listofRemovalOfSpecificPublishers; string path = "C:\\Library Automation\\Source\\publishers.xlsx"; var workBookData = GetWorkBookData(path, "Booking Publishers Info"); mWSheet1 = workBookData.mWorkSheet1; Microsoft.Office.Interop.Excel.Range xlRange; xlRange = mWSheet1.UsedRange; for (int i = 1; i <= xlRange.Rows.Count; i++) { string publisher = Convert.ToString(xlRange.Cells[i, 3].Value); //publisher column string bookState = Convert.ToString(xlRange.Cells[i, 8].Value); //status column if (carrier != "Publisher" && Convert.ToString(xlRange.Cells[i, 1].Value) != "Status") { if (removeList.Contains(publisher) && bookState == "INVALID") { xlRange.Cells[i, 1].EntireRow.Delete(null); } } } workBookData.mWorkbook.RefreshAll(); workBookData.mWorkbook.Save(); workBookData.mWorkbook.Close(Missing.Value, Missing.Value, Missing.Value); 

我需要知道是否有我错过的东西。谢谢你的帮助和时间。

很确定蒂姆·威廉姆斯已经回答了你的问题,但是我会在这个问题上加一点澄清。

当你从上到下运行一个for循环的时候,比如你在第10行,index在10,它适合你的条件被删除,它会删除第10行,然后跳转到第索引=索引+ 1。

那就是问题出现的时候了。 当你在10行删除行时,它下面的所有行按一行 ,所以在索引11处的行实际上是行12,索引为11的旧行现在在索引10处。

所以,是的,无论你是否正在删除,无论是行还是列,总是自下而上。