Чтобы получить последнюю ячейку, используйте следующую формулу:
lastCell = oSheet.Cells.SpecialCells(XlCellType.xlCellTypeLastCell)
Это прекрасно работает, если только у вас нет пользователей, которые посещали какие-то странные области электронной таблицы и делали то, что с тех пор удалили.Приведенная выше формула вернет последнюю ячейку, где бы они ни находились, в странных путешествиях, даже если теперь она пуста.
В моем случае мне приходится обрабатывать каждую ячейку во многих электронных таблицах, где пользователь опустился на строку 60,741 и столбец 50, даже если фактические данные содержат только пару сотен строк.Чтобы избежать этой огромной пустой области, вы хотите найти максимальную строку и максимальный столбец с данными и использовать эту ячейку в качестве нижнего правого угла квадрата ячеек с данными, как показано ниже (это C #, но не должно бытьтрудно перевести):
Microsoft.Office.Interop.Excel.Range maxCell =
(Microsoft.Office.Interop.Excel.Range)worksheet.Cells[worksheet.Cells.Find("*",
(Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1],
Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues,
Microsoft.Office.Interop.Excel.XlLookAt.xlWhole,
Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows,
Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious,
false, false, missing).Row,
worksheet.Cells.Find("*",
(Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1],
Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues,
Microsoft.Office.Interop.Excel.XlLookAt.xlWhole,
Microsoft.Office.Interop.Excel.XlSearchOrder.xlByColumns,
Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious,
false, false, missing).Column];
Это может сэкономить вам много времени на обработку.