Question

Je travaille avec C ++ non géré et Excel 2007. J'utilise un appel à l'API Excel4 pour obtenir la plage de cellules sélectionnée par l'utilisateur.

Lorsque l'utilisateur sélectionne ce que j'appelle un "commun" plage, cet appel renvoie une plage comme celle-ci "R1C1: R4C3", qui correspond exactement au format dont j'ai besoin pour effectuer d'autres opérations dans mon application.

Cependant, lorsque l'utilisateur décide de sélectionner des colonnes entières, cet appel d'API renvoie une plage contenant uniquement des colonnes, comme "C1: C3", qui est bien sûr une plage Excel valide, mais cela signifie pour moi que faut le modifier pour qu'il ressemble à la plage ci-dessus; en d'autres termes, je dois l'ajouter manuellement à la plage de lignes.

Je prends donc cette gamme "C1C3" et changez-le en "R1C1: R65534C3".

Peut-être avez-vous déjà remarqué mon problème à ce stade, comme vous pouvez le constater, il est difficile de coder la plage de lignes comme le nombre maximal de lignes pris en charge par Excel 2003 (l'application fonctionne également avec cette version d'Excel).

Ce n’est bien sûr pas ce que je recherche, car une fois que j’ai obtenu la plage sélectionnée, je lis les informations de cette plage et l’utilise pour faire une requête au serveur. Imaginez donc que l’utilisateur n’a saisi que des données. jusqu'à la ligne 534 et toujours ma requête aura 65000 lignes sans rien.

Ma question est donc de savoir comment obtenir la dernière cellule dans laquelle l'utilisateur a entré des données. Je pense que cela s'appelle la dernière cellule active. Je peux donc délimiter ma plage jusqu'à cette ligne et me rappeler que je travaille avec des solutions non gérées. code.

Était-ce utile?

La solution

L’API Excel 4? Vraiment?

Il existe une commande xlcSelectEnd que vous pouvez utiliser pour accéder à la dernière cellule dans laquelle le texte est entré dans n'importe quelle direction à partir d'une cellule donnée.

Autres conseils

Essayez de transtyper range.selection en un objet Range.

région Obtenir la dernière ligne utilisée

     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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top