通过C#删除excel中特定字符串后的每一行

时间:2017-02-10 06:57:54

标签: c# excel

我想删除特定关键字后面的每一行,也包括关键字行。有人可以帮我用C#代码。

示例: - 我没有附加虚拟excel文件,因为我是从移动设备发布的。

我在Excel中有一句话: - "你好用户"所以我必须在此之后删除所有数据行,包括它。最重要的是,这些数据不在固定线上,它可以在任何行号上....假设现在我已经在第10行给出了它,所以它可能在下一个文件中的第12行。

行号数据 10."你好用户" 11. A 12. B. 等等 。 。 。 。

1 个答案:

答案 0 :(得分:1)

我认为此代码适合您:

const string magicWord = "HelloUser";

Excel.Application app = new Excel.Application();
Excel.Workbook workbook = app.Workbooks.Open(@"myWorkbook.xlsx");
Excel.Worksheet worksheet = workbook.Sheets[1]; //Excel has no zero based index!!!

int magicWordRowIndex = Int32.MaxValue;

 //Here we find your magic word. But we can't delete the rows here, so just save the index
 for (int row = 1; row <= worksheet.Rows.Count; row++)
 {
    for (int column = 1; column <= worksheet.Columns.Count; column++)
    {
       if (worksheet.Rows[row][column] == magicWord)
       {
           magicWordRowIndex = row;
           break;
       }
     }
  }

  //Now we run reversed, because else our magicWordRowIndex become invalid if we delete rows
  for (int row = worksheet.Rows.Count; row >= magicWordRowIndex; row--)
  {
     ((Excel.Range) worksheet.Rows[row, Missing.Value]).Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
  }

Actualy我无法测试它但是应该做这个工作,也许你需要做一些小改动并使其符合你的需要。

首先它找到你的魔术词,它在开头是硬编码的。找到这个单词后,我们将从下到上删除所有行到现有单词。

  

请注意,您需要引用:Microsoft.Office.Interop.Excel