Как получить последнюю активную ячейку в Excel 2007 - PullRequest
2 голосов
/ 06 марта 2009

Я работаю с C ++ неуправляемым и Excel 2007. Я использую вызов Excel4 API, чтобы получить диапазон ячеек, выбранных пользователем.

Когда пользователь выбирает то, что я называю «общим» диапазоном, этот вызов возвращает диапазон, подобный этому «R1C1: R4C3», который является именно тем форматом, который мне нужен для выполнения других операций в моем приложении.

Однако, когда пользователь решает выбрать целые столбцы, этот вызов API возвращает диапазон только со столбцами, что-то вроде этого "C1: C3", что, конечно, является допустимым диапазоном Excel, но для меня это означает, что у меня есть изменить его так, чтобы он выглядел как диапазон выше; другими словами, я должен вручную добавить диапазон строк.

Поэтому я беру этот диапазон «C1C3» и меняю его на «R1C1: R65534C3».

Возможно, в этот момент вы уже заметили мою проблему, так как вы можете видеть, что я жестко кодирую диапазон строк, чтобы быть максимальным числом строк, поддерживаемых Excel 2003 (приложение также работает с этой версией Excel).

Это, конечно, не то, что я ищу, потому что как только я получаю выбранный диапазон, я читаю информацию в этом диапазоне и использую эту информацию, чтобы сделать запрос к серверу, поэтому представьте, что пользователь только вводил данные до строки 534 и до сих пор в моем запросе не будет 65000 строк ни с чем.

Итак, мой вопрос: как я могу получить последнюю ячейку, в которую пользователь ввел данные, я думаю, что она называется последней активной ячейкой, поэтому я могу ограничить свой диапазон до этой строки и, пожалуйста, помните, что я работаю с неуправляемой код.

Ответы [ 3 ]

3 голосов
/ 11 марта 2009

Excel 4 API? Действительно?

Есть команда xlcSelectEnd, которую вы можете использовать для перехода к последней ячейке с текстом, введенным в нее в любом направлении от данной ячейки.

1 голос
/ 11 марта 2009

Попробуйте привести range.selection к объекту Range.

0 голосов
/ 16 апреля 2009

регион Получить последнюю использованную строку

     Excel.ApplicationClass app = new Excel.ApplicationClass();
        Excel.Workbook workBook = app.Workbooks.Open(_PathFile,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value);
        // Get the active worksheet using sheet name or active sheet
        Excel.Worksheet workSheet = (Excel.Worksheet)workBook.ActiveSheet;
        // Find the last real row
        int _InLastRow = workSheet.Cells.Find("*",System.Reflection.Missing.Value,
            System.Reflection.Missing.Value, System.Reflection.Missing.Value, Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlPrevious, false,System.Reflection.Missing.Value,System.Reflection.Missing.Value).Row;
#endregion
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...