我想从第1列到第35列删除excel中的logging

//这里我试图删除从第1列开始到第35行的所有行。但是在删除logging时,有些logging被遗留,并且不删除所有行。 我无法理解问题实际在哪里。这是任务pipe理器的问题,但已经杀死了exe文件。 我遍历从第二行到最后一行的所有行,因此,如果logging不是空的,我将逐一删除logging的帮助下的get_range。

public static void GetIncidentExcel(string Incident_Path, List<excelObj> ListTickets) { lastRow = 0; MyApp = new Excel.Application(); // MyApp.Visible = false; MyBook = MyApp.Workbooks.Open(Incident_Path); MySheet = (Excel.Worksheet)MyBook.Sheets["BOXI_summary"]; // Explict cast is not required here lastRow = MySheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row; for (int i = 2; i <= lastRow; i++) { Array MyValues = (Array)MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString()).Cells.Value; if (Convert.ToString(MyValues.GetValue(1, 1)) == "" && Convert.ToString(MyValues.GetValue(1, 2)) == "" && Convert.ToString(MyValues.GetValue(1, 3)) == "" && Convert.ToString(MyValues.GetValue(1, 4)) == "" && Convert.ToString(MyValues.GetValue(1, 5)) == "" && Convert.ToString(MyValues.GetValue(1, 6)) == "" && Convert.ToString(MyValues.GetValue(1, 7)) == "" && Convert.ToString(MyValues.GetValue(1, 8)) == "" && Convert.ToString(MyValues.GetValue(1, 9)) == "" && Convert.ToString(MyValues.GetValue(1, 10)) == "" && Convert.ToString(MyValues.GetValue(1, 11)) == "" && Convert.ToString(MyValues.GetValue(1, 12)) == "" && Convert.ToString(MyValues.GetValue(1, 13)) == "" && Convert.ToString(MyValues.GetValue(1, 14)) == "" && Convert.ToString(MyValues.GetValue(1, 15)) == "" && Convert.ToString(MyValues.GetValue(1, 16)) == "" && Convert.ToString(MyValues.GetValue(1, 17)) == "" && Convert.ToString(MyValues.GetValue(1, 18)) == "" && Convert.ToString(MyValues.GetValue(1, 19)) == "" && Convert.ToString(MyValues.GetValue(1, 20)) == "" && Convert.ToString(MyValues.GetValue(1, 21)) == "" && Convert.ToString(MyValues.GetValue(1, 22)) == "" && Convert.ToString(MyValues.GetValue(1, 23)) == "") break; else { Excel.Range cells = MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString()); cells.Delete(); } } 

尝试用这样的东西replace你的循环:

 for (int i = lastRow; i >= 2; i--) { if (MyApp.WorksheetFunction.CountA(MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString())) == 0) { MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString()).Delete(Excel.XlDirection.xlUp); } } 

您可以使用WorksheetFunction对象来检查所有单元格是否为空,并且在删除行时总是应该向后循环