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

我有一个类似于下表的格式的Excel表,如果我知道列标题文本“Col2”,那我怎样才能检查该列中的所有单元格是否为空,如果它们是全部删除?

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

我想我需要select一个范围中的标题,并find列的索引与标题中的string相匹配,我也需要使用CountA来计算不是空的单元格? 我想中间还有一个步骤来selectCountA的列,然后我需要删除,如果有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; 

有人可以帮助这个,我试了很多次,但我不完全知道如何从这里开始。

首先,将以下using指令添加到您的文件的顶部:

 using Microsoft.Office.Interop.Excel; 

假设列标题在第1行中,可以使用以下方法:

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

并像这样调用它:

 i = 1; while (i < colCount) { excelCol = excelCols[i] as Range; excelCol.AutoFit(); if (excelSheet.Cells[1, i].Value2 == "Col2") DeleteColumnIfEmpty(excelSheet, i); }