C#擅长如何在使用范围内查找第一个单元格。

ProgSky

我可以XlCellType.xlCellTypeLastCell用来查找使用范围内的最后一个单元格。如何在一行中获得第一个单元格?

代码以获取最后一个单元格位置。

    Excel.Range mergeCells = (Excel.Range)mergeSheet.Cells[6,1].EntireRow;
    var rowRng = mergeCells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);
    var colPosition = rowRng.Column;

一种方法是获取mergeCells.value并循环通过以递增计数器,直到看到空值/空值。但是我希望能做到这一点。有任何想法吗 ?

测试用例:

(1)

在此处输入图片说明

预期结果colPosition = 1

(2) 在此处输入图片说明

预期结果colPosition = 5

用户8061994

这是使用Excel Interop库的解决方案(如问题中所标记)。下面的方法将返回给定行中第一个单元格的从1开始的列索引。它适用于您提供的测试用例以及我自己的一些用例。请注意,如果您只想使用已使用范围中的第一行-而不是提供的行,则可以使用来找到首先使用的行号ActiveSheet.UsedRange.Rows[1].Row

    public static int FindFirstCellInExcelRow(string filePath, int rowNum)
    {
        Excel.Application xlApp = null;
        Excel.Workbook wkBook = null;
        Excel.Worksheet wkSheet = null;
        Excel.Range range = null;
        try
        {
            xlApp = new Excel.Application();
            wkBook = xlApp.Workbooks.Open(filePath);
            wkSheet = wkBook.ActiveSheet;
            range = wkSheet.Cells[rowNum, 1].EntireRow;
            if (range.Cells[1, 1].Value != null)
            {
                return range.Cells[1, 1].Column;
            }
            var result = range.Find(What: "*", After: range.Cells[1, 1], LookAt: Excel.XlLookAt.xlPart, LookIn: Excel.XlFindLookIn.xlValues, SearchOrder: Excel.XlSearchOrder.xlByColumns, SearchDirection: Excel.XlSearchDirection.xlNext, MatchByte: false, MatchCase: false);
            int colIdx = result?.Column ?? 0; // return 0 if no cell in row contains value
            return colIdx;
        }
        finally
        {
            wkBook.Close();
            Marshal.ReleaseComObject(xlApp);
            Marshal.ReleaseComObject(wkBook);
            Marshal.ReleaseComObject(wkSheet);
            Marshal.ReleaseComObject(range);
            xlApp = null;
            wkBook = null;
            wkSheet = null;
            range = null;
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取范围内的第一个选定单元格

VBA在范围内找到第一个连续的空单元格

如何获取值等于特定值的范围内的第一个单元格

Excel UDF查找具有给定值的范围内的第一个和最后一个单元格-运行缓慢

如何使用querySelectorAll()查找表行的第一个单元格

选择范围内的一个单元格

C#Excel生成-使用最后一个单元格作为正确数据的第一个单元格的范围复制(不良行为)

在行中查找一个单元格,然后使用该单元格引用在该单元格引用范围内查找垂直单元格

使用(任何)文本字符串在行范围内查找一个单元格并将该单词输出到结果单元格中

查找范围内的空单元格,然后返回与空单元格在同一行中的另一个单元格的内容

如何在单元格范围内使用 IF AND 语句

如何在具有已知第一个单元格并在特定值单元格之前结束的列中定义范围

修改范围内的一个单元格后自动对范围内的单元格进行排序?

如何找到一个范围内特定单元格的总和?

如何选择列范围内的最后一个单元格?

查找行中最后使用的单元格的范围,计算距离和偏移量以显示找到的范围列中第一个单元格的单元格内容

如何使用c#将特定范围内的单元格从一个excel工作簿复制到另一个工作簿

查找在一个范围内具有共同列的唯一单元格的数量

在范围内查找值并返回第一行单元格

如何在Excel中选择单元格中的第一个数字?

如何在tableView中设置第一个单元格的rowHeight

如何在VBA中找到第一个空单元格?

如何在列的第一个空单元格中添加值?

选择从第一个使用的单元格到列中使用的最后一个单元格的范围

如何更改VBA代码以与第一个单元格一起使用?

在Excel中删除行不会重置最后一个单元格(使用范围)

对整个列而不是一个单元格使用范围

Excel:在过滤范围内查找最后一个非零,非空单元格

如何对一个范围内的一个单元格值进行编号,然后在单元格的值更改时重新开始编号