在Excel中第一个空行

有没有办法find使用VSTO或C#的Excel表中第一个可用的空行? 我一直在寻找几个小时,但无法find与之相关的任何事情。 在这方面的任何帮助将不胜感激

如果应用程序是您的Excel应用程序,则可循环遍历从数字1开始的行,并使用CountA函数查找第一个空(它返回Range的非空单元的数量):

int rowIdx = 0; int notEmpty = 1; while (notEmpty > 0) { string aCellAddress = "A" + (++rowIdx).ToString(); Range row = App.get_Range(aCellAddress, aCellAddress).EntireRow; notEmpty = _App.WorksheetFunction.CountA(row); } 

当while循环退出时,rowIdx是第一个空行的索引。

CountA会接收其他29个可选参数,因此您可能必须在早期版本的框架中传递29次Missing.Value。

 Excel.Worksheet xlWorkSheet1 = (Excel.Worksheet)excelbk.Worksheets["Sheet1"]; xlRange = (Excel.Range)xlWorkSheet1.Cells[xlWorkSheet1.Rows.Count, 1]; long lastRow = (long)xlRange.get_End(Excel.XlDirection.xlUp).Row; Long newRow = lastRow + 1 

来自此链接的代码: http : //social.msdn.microsoft.com/Forums/pl/exceldev/thread/90384567-3338-4c56-bc6b-70db94d8cbcc

有一个Range.End属性或Range.get_End方法结合一个方向将给你一个范围内的第一个空白单元格。

有一个可能的解决scheme看看这个问题: 如何findExcel工作表中的下一个空白行编程方式使用C#
关键是:

 Excel.Worksheet xlWorkSheet1 = (Excel.Worksheet)excelbk.Worksheets["Sheet1"]; xlRange = (Excel.Range)xlWorkSheet1.Cells[xlWorkSheet1.Rows.Count, 1]; long lastRow = (long)xlRange.get_End(Excel.XlDirection.xlUp).Row; Long newRow = lastRow + 1 

但是如果你有一个列,你知道将永远有每个单元格填充,直到最后一个,那么你可以得到结束在向下的方向。