Excel interop: _Worksheet ou une Feuille de calcul?

Je suis en train d'écrire à propos de typage dynamique, et je suis en train de donner un exemple d'Excel interop. J'ai à peine fait Office interop avant, et il montre. Le MSDN Bureau Interop tutoriel pour C# 4 utilise le _Worksheet de l'interface, mais il y a aussi un Worksheet interface. Je n'ai aucune idée de ce qu'est la différence.

Dans mon absurdement simple démo d'application (voir ci-dessous), soit fonctionne très bien - mais si les meilleures pratiques montrent l'un ou l'autre, je préfère l'utiliser de façon appropriée.

using System;
using System.Linq;
using Excel = Microsoft.Office.Interop.Excel;

class DynamicExcel
{
    static void Main()
    {
        var app = new Excel.Application { Visible = true };
        app.Workbooks.Add();

        //Can use Excel._Worksheet instead here. Which is better?
        Excel.Worksheet workSheet = app.ActiveSheet;

        Excel.Range start = workSheet.Cells[1, 1];
        Excel.Range end = workSheet.Cells[1, 20];
        workSheet.get_Range(start, end).Value2 = Enumerable.Range(1, 20)
                                                           .ToArray();
    }
}

J'essaie d'éviter de faire un plein plongée dans COM ou au Bureau de l'interopérabilité, tout en soulignant les nouvelles fonctionnalités de C# 4 - mais je ne veux pas faire quelque chose de vraiment, vraiment stupide.

(Il y a peut être quelque chose de vraiment, vraiment stupide dans le code ci-dessus ainsi, dans ce cas s'il vous plaît laissez-moi savoir. À l'aide d'une start/end cellules au lieu de simplement "A1:T1" est délibéré: il est plus facile de voir que c'est véritablement une gamme de 20 cellules. Tout le reste est probablement accidentelle.)

Donc, dois-je utiliser _Worksheet ou Worksheet, et pourquoi?

  • Jon, en plus de l'excellent réponses données ici, je voudrais ajouter que, en général, lorsque vous travaillez avec Excel par le biais de l'interopérabilité, utiliser le nom de la classe comme elle apparaît normalement dans Excel. Cela signifie utiliser la "Feuille de calcul" au lieu de "_Worksheet', et d'utiliser l '"Application" au lieu de "ApplicationClass'. (Une discussion ici explique pourquoi ne pas utiliser les ApplicationClass': blogs.msdn.com/ptorr/archive/2004/02/05/67872.aspx.) Si vous n'êtes pas familier avec le modèle objet d'Excel est exposé à COM, alors que cela pourrait être plus compliqué, mais je pense qu'il devrait être assez clair la plupart du temps.
  • Heureusement, je fais très peu, avec des bureaux, vraiment juste en essayant de montrer les nouvelles fonctionnalités. Merci beaucoup pour le lien si - très utile!
  • Je suis désolé, mais ont à poser - Quelle est la nouvelle fonctionnalité de C# 4 que vous mettez en surbrillance?
  • Pour ce cas particulier, il a été typage dynamique - les types de retour différents appels de méthode/propriétés sont en fait des "dynamique", d'où le manque de jette qui serait autrement nécessaire.
InformationsquelleAutor Jon Skeet | 2009-06-26