Eigene Worksheet-Klasse (Interop.Excel)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Eigene Worksheet-Klasse (Interop.Excel)

    Hi!

    Bin grade mit einem Programm beschäftigt der mit Excel arbeiten muss, in dem er Daten in verschiedene Excel-Blätter speichert.
    Jetzt wollte ich mir eine eigene ExcelSheet-Klasse anlegen, wo jedes Object einzelne Sheets in meinem Workbook repräsentiert. Dann wollte ich z.B Methoden schreiben für das "Layaouten" der Sheets usw. Also so wie eine Makro, nur nicht mit VBA.
    Kann ich irgendwie machen, dass diese Klasse von der Worksheet-klasse in Interop.Excel erbt o.ä.?

    Bis jetzt habe ich das hier:

    VB.NET-Quellcode

    1. ​Imports Microsoft.Office.Interop.Excel
    2. Public Class ExcelSheet
    3. Dim _name As String
    4. Public Property MeWorkSheet As Worksheet
    5. Sub New(ByVal workbook As Workbook, ByVal sheetName As String)
    6. Try
    7. MeWorkSheet = workbook.Worksheets.Add()
    8. MeWorkSheet.Name = sheetName
    9. Catch ex As Exception
    10. End Try
    11. End Sub
    12. Sub New(ByVal workbook As Workbook)
    13. Try
    14. MeWorkSheet = workbook.Worksheets.Add()
    15. Catch ex As Exception
    16. End Try
    17. End Sub
    18. End Class


    Ist aber nicht schön weil ich alles über die Property MeWorkSheet machen muss...

    Bin nicht sooo weit in der Welt von OOP und bei manchen Sachen komme ich noch nicht ganz klar. Evtl gehe ich aber hier auch an das Problem falsch ran und gibt eine elegantere Methode es zu erledigen..?
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.
    Vererbung kannst du vergessen, weil die Worksheet-Klasse nur ein Interop-Proxy ist. Die Klassen werden von TLBIMP nur generiert, damit der OO-Programmierer New verwenden kann, was mit dem ursprünglich importierten Interface nicht funktionieren würde. Du könntest nicht mal eine Ebene tiefer durch Vererbung im nativen Code ansetzen, weil du dann immer noch auf dem Level der COM-API bist und nicht in Excel selbst. Und näher kommst du an die Interna von Excel nicht ran.

    Du schreibst gerade einen Wrapper um den Wrapper für die COM-API von Excel. Das ist machbar, solange du dich auf die Abläufe beschränkst, die du wirklich brauchst. Alles andere halte ich für zu aufwendig.
    Gruß
    hal2000