有没有办法使用 vsto 或 c# 在 excel 表中找到第一个可用的空白行?我一直在寻找几个小时,但找不到任何与之相关的东西。在这方面的任何帮助将不胜感激
问问题
15110 次
3 回答
8
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
于 2012-05-25T11:00:11.057 回答
3
如果 App 是您的 excel 应用程序,您可以遍历从数字 1 开始的行并使用 CountA 函数查找第一个空(它返回范围的非空单元格的数量):
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 个可选参数,因此对于早期版本的框架,您可能必须传递 Missing.Value 29 次。
于 2012-05-25T12:31:59.323 回答
2
有一个 Range.End 属性或 Range.get_End 方法与方向相结合将为您提供范围中的第一个空白单元格。
看看这个问题以获得可能的解决方案:如何使用 C# 以编程方式在 Excel 工作表中找到下一个空白行
关键位是:
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
但是,如果您有一个列,并且您知道将始终填充每个单元格,直到最后一个单元格,那么您就可以在向下的方向结束。
于 2012-05-25T11:03:07.860 回答