按标题文本选择列并检查列的其余部分是否为空,如果为空则删除?

时间:2015-09-09 19:07:08

标签: c# .net excel office-interop excel-interop

我有一张excel表格,其格式与下表类似,如果我知道列标题文本“Col2”,那我怎么能检查该列中的所有单元格是否为空,如果它们是删除整列是

*Col1 * Col2 * Col3*
********************
*Val  *      * Val *
*Val  *      * Val *

我想我需要在一个范围内选择标题并找到列的索引,其标题与相关字符串匹配,我还需要使用CountA来计算非空单元格?我认为在中间缺少一步来选择CountA的列,然后我需要删除是否有0个非空单元格。

我在下面的工作代码中打开工作表并调整列的大小:

            excelApp = new Microsoft.Office.Interop.Excel.Application();
            excelBooks = excelApp.Workbooks;

            excelBook = excelBooks.Open("test.csv", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
            Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

            excelSheet = excelBook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;

            excelCols = excelSheet.Columns;


            i = 1;
            while (i < colCount) {
                excelCol = excelCols[i] as Microsoft.Office.Interop.Excel.Range;
                excelCol.AutoFit();
            }

            //range for first row
            excelRows = excelSheet.Rows;
            excelRow = excelRows[1] as Microsoft.Office.Interop.Excel.Range;

有人可以帮忙解决这个问题吗,我多次尝试但是我不能完全确定如何从这里开始。

1 个答案:

答案 0 :(得分:2)

首先,将以下<tr ng-repeat="x in p | |limitTo:1"> <td> {{ x.images }} </td> </tr> 指令添加到文件顶部:

using

假设您的列标题位于第1行,您可以使用以下方法:

using Microsoft.Office.Interop.Excel;

并称之为:

static void DeleteColumnIfEmpty(Worksheet wkst, int colNo)
{
    for (int i = 2; i <= wkst.UsedRange.Rows.Count; i++)
    {
        if (wkst.Cells[i, colNo].Value2 != null) return;
    }

    wkst.Columns[colNo].Delete();
}