Pergunta

Eu estou trabalhando com C ++ não gerenciado e Excel 2007. Eu estou usando uma chamada para a API Excel4 para obter o intervalo de células seleccionadas pelo utilizador.

Quando o usuário seleciona o que eu chamo uma gama "comum", esta chamada retorna uma série como esta. "R1C1: R4C3", que é exatamente o formato que eu preciso para fazer outras operações no meu aplicativo

No entanto, quando o usuário decide selecionar colunas inteiras, então esta chamada API retorna uma gama única com colunas, algo como isto "C1: C3", o que naturalmente é um intervalo do Excel válido, mas isso significa para mim que eu tenho modificá-lo para que ele se parece com o da faixa acima; em outras palavras, eu tenho que adicioná-lo as linhas variam manualmente.

Então eu tomar este intervalo "C1C3" e alterá-lo para ser. "R1C1: R65534C3"

Talvez neste momento você já percebeu o meu problema, como você pode ver eu estou difícil codificar as linhas vão ser os números máximo de linhas suportadas pelo Excel 2003 (o aplicativo também funciona com esta versão do Excel).

Isto, obviamente, não é o que estou procurando, porque uma vez que recebo o intervalo selecionado, eu li a informação nesse intervalo e uso essa informação para fazer uma consulta para o servidor, então imagine que o usuário entrou apenas os dados até linha 534 e ainda a minha consulta terá 65000 linhas com nada.

Assim, a minha pergunta é como posso obter a última célula em que o usuário inseriu dados, eu acho que é chamado a última célula ativa, para que eu possa delimitar minha faixa até que linha e lembre-se que eu estou trabalhando com não gerenciado código.

Foi útil?

Solução

O Excel 4 API? Realmente?

Há uma xlcSelectEnd comando que você pode usar para saltar para a última célula com texto inserido nele em qualquer direção a partir de uma determinada célula.

Outras dicas

Tente lançando range.selection a um objeto Range.

região Obter última linha usado

     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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top