我正在使用excel文件创建一个web应用程序。如果excel文件有m行n列,并且如果该行A列中单元格的值是字符串"str",则我必须删除整行。
我尝试了各种方法。我现在使用的这个删除了一半以上的现有元素。我正在使用Microsoft.Office.Interop.Excel。我想知道为什么会发生这种情况,以及问题的解决方案。提前谢谢。
public void DeleteRow(int m, string str)
{
for (int rCnt = 2; rCnt <= m; rCnt++)
{
if((ws.Cells[rCnt, 1]).ToString().Contains(str))
{
((Range)ws.Rows[rCnt]).Delete(XlDirection.xlUp);
}
}
wb.Save();//save the workbook
wb.Close(false, "", false);//close the workbook
}
}
我甚至尝试过使用:
((Range)ws.Rows[rCnt]).EntireRow.Delete(XlDirection.xlUp);
而不是:
((Range)ws.Rows[rCnt]).Delete(XlDirection.xlUp);
自下而上:
for (int rCnt = m; rCnt >= 2; rCnt--)
这将避免删除错误的行,因为行在删除后会发生偏移。