C# - Excel:删除行,具体取决于第一列中的值

时间:2011-11-21 13:19:26

标签: c# excel row

想象一下,你有A栏。 有100行,单元格中有数字,如1,2,3,直到100 ..

我如何编程(C#)删除特定的行,例如:删除行 A列中的值为5 ..

我正在使用Microsoft.Office.Interop.Excel及相关代码:

        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\fre\Desktop\TestDatei.xls");
        Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
        Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange;

        xlWorksheet.Select(Type.Missing);
        Microsoft.Office.Interop.Excel.Range range = xlWorksheet.get_Range("B1:B5", Type.Missing);
        range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp);

2 个答案:

答案 0 :(得分:1)

因为我也感兴趣,我在网上做了一些调查并创建了一些示例代码。也许这可以帮到你:

    private void DeleteCells(object sender, EventArgs e)
    {
        // create excel-instance:
        Excel.Application excel = new Excel.Application();
        // open the concrete file:
        Excel.Workbook excelWorkbook = excel.Workbooks.Open(@"D:\test.xls");
        // select worksheet. NOT zero-based!!:
        Excel._Worksheet excelWorkbookWorksheet = excelWorkbook.Sheets[1];
        // create a range:
        Excel.Range usedRange = excelWorkbookWorksheet.UsedRange;

        // iterate range
        foreach (Excel.Range r in usedRange)
        {
            // check condition:
            if (r.Value2 == 5.0F)
                // if match, delete and shift remaining cells up:
                r.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
        }

        // save changes (!!):
        excelWorkbook.Save();

        // cleanup:
        if (excel != null)
        {
            Process[] pProcess;
            pProcess = System.Diagnostics.Process.GetProcessesByName("Excel");
            pProcess[0].Kill();
        }
    }

问候!

答案 1 :(得分:0)

如果要删除整行,请尝试使用

Range usedRanage=sheet.UsedRange;
foreach (Range r in usedRanage) 
{
    if (Convert.ToString(r.Value2)=="RETRIEVE") 
    {
        r.EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp);
    }
}