【问题标题】:deleting rows from an excel file using c#使用c#从excel文件中删除行
【发布时间】:2012-03-30 22:32:10
【问题描述】:

我正在打开一个这样的 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);

我想知道:
如何循环遍历所有行并删除字符串SomeString 未出现在column A 中的每一行?

我知道如何遍历每个值:

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);
    }
}

但我不知道如何删除整行

【问题讨论】:

  • 您应该可以使用:'range.EntireRow.Delete(Excel.XLDirection.xlUp)' - 只需使用工作表对象 (xlWorksheet) 设置范围。
  • @PatrickPitre 非常感谢!如何设置范围?
  • 看起来像: range = xlWorksheet.get_Range("A1", "B1"); range.EntireRow.Delete(Excel.XLDirection.xlUp);
  • 正在使用什么库?有什么用处?

标签: c# .net excel


【解决方案1】:

一旦你参考了工作表,就说

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

shiftDirection 看这里:Range.Delete method

您可能必须将单元格的内容转换为字符串。

【讨论】:

    【解决方案2】:

    我知道问题已经得到解答,但您可以尝试以下方法

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2019-12-10
      相关资源
      最近更新 更多