0

我正在用 C# 编码并使用 Microsoft.Office.Interop.Excel。我有 AF 列,有些行在 B 列中没有任何值。所以我想遍历 B 列并找到所有没有文本/值的单元格,然后删除整行。我设法遍历 B 列并找到空单元格,但是当我尝试删除该行时 - 没有任何反应。这是我的代码:

Excel.Range B = objsheet.get_Range("B1:B" + lastUsedRow, System.Type.Missing);
foreach (Excel.Range r in B)
{
    string column = r.Text.ToString();

    if (string.IsNullOrEmpty(column))
    {
        Excel.Range BEntireRow = objsheet.get_Range(r + "1:" + r + "B" + lastUsedColumn, System.Type.Missing);
        //  Excel.Range BEntireRow2 = r.EntireRow;
        BEntireRow.Delete(Microsoft.Office.Interop.Excel.XlDirection.xlUp);

    }
}
4

2 回答 2

2

您可以执行以下操作,而不是遍历列;这是 VBA 代码:

Range("B1:B" + lastUsedRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

在 C# 中,您将使用:

.SpecialCells(Excel.XlCellType.xlCellTypeBlanks)

顺便说一句,我不会命名您的 Excel.Application 对象Excel- 我会使用 xl 甚至 myXl。否则会令人困惑,并且可能会在某些时候导致错误。

添加完整的 C# 语句将是

Range("B1:B" + lastUsedRow).SpecialCells(Excel.XlCellType.xlCellTypeBlanks).EntireRow.Delete();
于 2013-07-17T17:24:07.897 回答
0

尝试这样的事情:

Rows([INSERT_THE_ROW_YOU_WANT_TO_DELETE_HERE]).EntireRow.Delete;
于 2013-07-17T17:18:41.117 回答