C # - Excel: удалить строку, в зависимости от значения в первом столбце - PullRequest
1 голос
/ 21 ноября 2011

Представьте себе, что у вас есть столбец А. Есть 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 ]

1 голос
/ 22 ноября 2011

, потому что я тоже был заинтересован, я провел некоторое исследование в сети и создал некоторый пример кода. Может быть, это может помочь вам:

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

привет! * * 1004

Jens

0 голосов
/ 23 июля 2015

Если вы хотите удалить всю строку, попробуйте это работает

Range usedRanage=sheet.UsedRange;
foreach (Range r in usedRanage) 
{
    if (Convert.ToString(r.Value2)=="RETRIEVE") 
    {
        r.EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...