none
Débogage en mode mixte RRS feed

  • Discussion générale

  • Bonjour tout le monde,

    Après avoir passé il y a un moment dix ans à développer sous Excel, et faire des appels à Excel à partir d'autres applications bureautiques via interop, à présent je viens de ramer sous C# pour parcourir un classeur Excel, car là où j'appelle un objet Range et je m'attends à parcourir ses cellules avec la propriété Cells, je me retrouve avec un objet System.__ComObject, qui n'a pas de propriété Cells c'est pour ça que c'est "drôle", et du coup ça ne me retourne que la valeur de la première cellule, sur une quinzaine ça ne fait franchement pas beaucoup. D'ailleurs je me rappelle avoir vu passer quelque chose qui ressemble à un tableau mais un cast en ce sens échoue.

    En ramant j'ai un peu regardé la rive, et du coup j'ai découvert la notion de debugging mixte, celle d'activation du code natif ...

    https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-debug-in-mixed-mode?view=vs-2019

    Mais je vois qu'il faut créer un projet C++ : est-ce que ça veut dire que pour appeler Excel il faut développer en C++, quitte à s'y mettre rien que pour ça, ou est-ce que je crée un projet C++ pour activer le débugage mixte, et si je m'y prends bien ça peut rester valable pour un projet C# ? Mais alors dans ce dernier cas il semble intéressant de savoir ce que signifie bien s'y prendre. J'imagine bien l'idée de mettre les deux projets dans la même solution, au stade où ça se présente j'avoue ne pas trouver le courage de m'y mettre tout de suite sans savoir jusqu'à quelle heure ça m'embarque, si il se trouve quelqu'un pour me confirmer que mon idée est la bonne ça peut bien aider.

    Ah oui alors du coup : au moment où je vais m'y remettre je n'aurai pas forcément Excel sous la main, est-ce que d'autres applications peuvent permettre de tester ce joujou, sans poser de problème de licence ? J'imagine que ça ne marche pas avec l'appel de Excel en ligne ? À défaut est-ce que c'est possible de préparer l'étude de cette affaire-là, pour tester vite fait le jour où passe une machine avec Excel ?

    Peut-être que le debugage en mode mixte est quelque chose qu'il faut prendre le temps d'assimiler proprement, par opposition à s'y mettre sur un coin de table quelques heures avant de devoir remettre un projet ?

    Accessoirement la doc citée est fournie par défaut pour Visual Studio 2019, mais je vois que les mêmes options sont valables dans Visual Studio Community 2017, est-ce que ça marche aussi ?

    Ah, au passage, quelque chose d'un peu déstabilisant : Range exists in both ConvExcel, and Microsoft.Office.Interop.Excel (avec les numéros de versions).

    Mais ma syntaxe, dans la "fenêtre immédiate", était :

    ? ((Microsoft.Office.Interop.Excel.Range)row).Value

    Pensez-vous que la machine ait abusé de la vodka ?


    vendredi 22 novembre 2019 16:28