gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:06:24 25 4
gpt4 key购买 nike

我有一个与下表类似格式的 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;

有人可以帮忙吗,我尝试了很多次,但我不完全确定如何从这里开始。

最佳答案

首先,添加以下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);
}

关于c# - 按标题文本选择列并检查列的其余部分是否为空,如果为空则删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com