c# excel 如何在使用的范围内查找第一个单元格。

我可以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)

http://img3.mukewang.com/619a1b2b00013b1a09830164.jpg

预期结果 colPosition = 1

(2)

http://img3.mukewang.com/619a1b390001497613610155.jpg

预期结果 colPosition = 5


白衣非少年
浏览 399回答 3
3回答

开满天机

这是使用 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;        }    }

鸿蒙传说

我强烈 (x10) 建议在 Microsoft 的 Excel 库上使用 ClosedXML(除非您使用旧的 xls 文件)。使用 ClosedXML 您可以执行以下操作(这是从他们的网页中直接获取的):从 NuGet 包中获取它。 Install-Package ClosedXML -Version 0.93.1https://github.com/ClosedXML/ClosedXML/wiki/Finding-and-extracting-the-data  var wb = new XLWorkbook(northwinddataXlsx);  var ws = wb.Worksheet("Data");  // Look for the first row used  var firstRowUsed = ws.FirstRowUsed();  // Narrow down the row so that it only includes the used part  var categoryRow = firstRowUsed.RowUsed();  // Move to the next row (it now has the titles)  categoryRow = categoryRow.RowBelow();  // Get all categories  while (!categoryRow.Cell(coCategoryId).IsEmpty())  {    String categoryName = categoryRow.Cell(coCategoryName).GetString();    categories.Add(categoryName);    categoryRow = categoryRow.RowBelow();  }

不负相思意

试试下面的代码片段,这将给出 excel 使用范围的第一行Excel.Workbook xlWB = Globals.ThisAddIn.Application.ActiveWorkbook;Excel.Worksheet xlWS = xlWB.ActiveSheet;int firstRow = xlWS.UsedRange.Row;
打开App,查看更多内容
随时随地看视频慕课网APP