2011-02-15 1 views
3

Un peu de préface: ce projet, bien que techniquement, est entièrement sous le contrôle de mon équipe de cinq personnes. Nous avons conçu le projet, défini la portée et exercé un contrôle créatif total. Ce n'est donc pas un devoir traditionnel, c'est l'équivalent d'un projet senior.Fragilité de l'utilisation de la bibliothèque d'objets Excel dans Visual Basic

L'une des sorties du système que je développe devrait être très semblable à une feuille de calcul Excel bien formatée. Nous pourrions créer (ou trouver) une bibliothèque graphique et gérer l'impression dans notre propre code ... mais finalement nous pensons qu'un fichier Excel sera plus portable. Comme l'utilisateur peut l'ouvrir dans Excel, le modifier, e-mail il, etc.

Excel semble Accès programatically assez simple (ex: http://support.microsoft.com/kb/302094)

Mais ma question est: ce qui se passe quand « Bureau 2013 "sort, et l'utilisateur supprime Office 2010 et installe 2013?

Je ne serai pas là pour maintenir ce projet ... et je détesterais forcer quelqu'un à ouvrir mon code juste pour faire référence à Excel 13.0 COM. Je vais utiliser des fonctions incroyablement basiques de l'API. Tant que je peux lire et écrire sur une plage de cellules et ajuster la couleur intérieure des cellules, mon code fonctionnera.

En général, comment puis-je rendre mon code VB.Net accessible quelle que soit l'API Microsoft Excel disponible sur le système cible? (Incluant les futures API Excel.)

+1

Excel.Application a fait référence à laquelle jamais version d'Excel est installé depuis un certain temps cette étape. Il n'y a aucune référence au numéro de version dans cela. – Fionnuala

+0

Pour référencer le lien KB dans mon message: "Dans l'onglet COM, recherchez Microsoft Excel Object Library, puis cliquez sur Sélectionner." - L'onglet COM affiche des numéros de version spécifiques, c'est le numéro de version qui m'inquiète. Cela n'a-t-il pas besoin de refléter la version installée d'Office sur la machine cliente, juste le dev. machine? – Robbie

+0

Avez-vous pensé à sortir les données dans un fichier cvs à la place? De cette façon, votre utilisateur n'est pas bloqué pour exceller du tout – Ralph

Répondre

1

Je recommande d'abord de développer en utilisant le PIA Excel (Primary Interop Assemblies) afin que vous obteniez l'auto-complétion et l'aide en ligne dans Visual Studio. Une fois votre programme terminé, je vous recommande de passer à une liaison tardive avant de publier, de sorte que votre EXE fonctionne avec différentes versions d'Excel.

  1. Développer la première utilisation de la PIA actuelle Excel jusqu'à ce qu'il fonctionne comme vous besoin (Google « Excel PIA » pour télécharger les ensembles)
  2. Lorsque votre programme est terminé, ajoutez Option Strict Off au sommet des modules qui utilisent Objets Excel
  3. Remplacer toutes les classes Excel PIA par Object
    Dim xls As Excel.Application
    devient
    Dim xls As Object
  4. Remplacer
    xls = New Excel.Application
    avec
    xls = CreateObject("Excel.Application")
  5. Retirez la référence Excel PIA et ranger