使用C#删除Excel文件中的行

4

我是这样打开Excel文件的:

Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;

string str;
int rCnt = 0;
int cCnt = 0;

xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

我希望了解:

如何循环遍历所有行,并删除在其中列A中不出现字符串SomeString的每一行?

我知道如何循环遍历每个值:

for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
{
    for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
    {
        str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
        MessageBox.Show(str);
    }
}

但我不知道如何删除整行


1
你应该能够使用:'range.EntireRow.Delete(Excel.XLDirection.xlUp)' - 只需使用工作表对象(xlWorksheet)设置范围。 - Patrick Pitre
@PatrickPitre 非常感谢!我该如何设置范围? - Alex Gordon
1
代码如下:range = xlWorksheet.get_Range("A1", "B1"); range.EntireRow.Delete(Excel.XLDirection.xlUp); - Patrick Pitre
正在使用哪个库?有哪些引用? - Doug
2个回答

15

一旦您获得工作表的引用,比如说:

for(int i = 1; i <=100; i++)
{
  if(!worksheet.Cells[i,1].Contains("SomeString"))
  {
     ((Range)worksheet.Rows[i]).Delete(shiftDirection)
  }
}

查看此处的shiftDirection:Range.Delete 方法

您可能需要将单元格内容转换为字符串。


-1

我知道这个问题已经有答案了,但你可以尝试以下的方法

 for (int i = dt.Rows.Count - 1; i >= 0; i--)
     {
         if (!dt.Rows[i]["column A"].Contains("SomeString "))
         {
             dt.Rows.RemoveAt(i);
         }
     }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接