Pregunta

Estoy trabajando con C ++ no administrado y Excel 2007. Estoy usando una llamada a la API de Excel4 para obtener el rango de celdas seleccionadas por el usuario.

Cuando el usuario selecciona lo que llamo un " común " rango, esta llamada devuelve un rango como este " R1C1: R4C3 " ;, que es exactamente el formato que necesito para realizar otras operaciones en mi aplicación.

Sin embargo, cuando el usuario decide seleccionar columnas enteras, entonces esta llamada a la API devuelve un rango solo con columnas, algo como esto " C1: C3 " ;, que por supuesto es un rango válido de excel, pero significa para mí que Hay que modificarlo para que se vea como el rango arriba; en otras palabras, tengo que agregarlo manualmente al rango de filas.

Entonces tomo este rango " C1C3 " y cambiarlo para que sea " R1C1: R65534C3 " ;.

Tal vez en este punto ya haya notado mi problema, como puede ver, estoy programando el rango de filas para que sea el número máximo de filas admitidas por Excel 2003 (la aplicación también funciona con esta versión de Excel).

Por supuesto, esto no es lo que estoy buscando, porque una vez que obtengo el rango seleccionado, leo la información en ese rango y la uso para hacer una consulta al servidor, así que imagino que el usuario solo ingresó los datos. hasta la fila 534 y aún así mi consulta tendrá 65000 filas sin nada.

Entonces, mi pregunta es cómo puedo obtener la última celda en la que el usuario ingresó los datos. Creo que se llama la última celda activa, así puedo delimitar mi rango hasta esa fila y recuerde que estoy trabajando con un administrador no administrado. código.

¿Fue útil?

Solución

¿La API de Excel 4? ¿En serio?

Hay un comando xlcSelectEnd que puedes usar para saltar a la última celda con texto ingresado en cualquier dirección desde una celda determinada.

Otros consejos

Intente lanzar una selección de rango a un objeto Range.

región Obtener la última fila utilizada

     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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top