none
c# interop EXCEL Inhalt einer Tabelle löschen RRS feed

  • Frage

  • Hallo zusammen,

    Wie kann ich den Inhalt einer EXCEL Tabelle löschen, ohne die Verknüfung der Zellen zu anderen Tabellen zu verlieren?

    mit freundlichen Grüßen

    Carl-Heinz

    Mittwoch, 18. Januar 2017 04:56

Antworten

  • Hallo Carl-Heinz,

    in dem Fall ist das doch nicht so schwierig.

    wenn die zu löschende Tabelle selbst keine Verknüpfungen enthält (WS ist das worksheet mit den Daten):

    WS.UsedRange.ClearContents();


    Falls die Tabelle auch Verknüfungen enthält die nicht gelöscht werden dürfen:

    foreach (Excel.Range item in WS.UsedRange) { if (!item.HasFormula) { item.ClearContents(); } }

    Grüße

    Roland

    Mittwoch, 18. Januar 2017 09:41
  • Hallo Carl-Heinz,

    als Dokumentation nutze ich immer die EXCEL-VBA-Dokumentation.

    Aus meiner Sicht sind im Interop-Interface alle Excel Klassen und Methoden und Eigenschaften wie in der VBA-Dokumentation nutzbar. Manchmal muss man mit den Datentypen etwas aufpassen, und natürlich an die Übersetzung VBA -> C# denken, was aber bei einzelnen Methoden-Aufrufen nicht so schwierig ist.

    Grüße

    Roland

    Mittwoch, 18. Januar 2017 10:22

Alle Antworten

  • Hallo Carl-Heinz,

    wenn ich Deine Frage richtig verstanden habe, müsstest Du nur den Inhalt der Tabelle löschen auf die die Verknüpfung zeigt.

    Wenn eine Zelle eine Verknüfung auf eine andere Zelle hat, dann wird durch löschen dieser Zelle die Verknüpfung gelöscht.

    Man könnt jetzt zwar die Verknüfung auslesen und rekursiv die Verknüfung so lange zurückverfolgen bis nur noch Werte gefunden werden um diese dann zu löschen. Das kann aber sehr aufwendig werden.

    Grüße

    Roland

    Mittwoch, 18. Januar 2017 08:28
  • Hallo Roland,

    danke für die rasche Antwort.

    Es besteht folgendes Szenario:

    Zellen in einer Tabelle A verweisen auf Zellen einer Tabelle B, bzw. sind damit verknüpft.

    In meiner Anwendung bearbeite ich Tabell B, zu Tabelle A habe ich keinen Zugriff.

    Lösche ich die Tabelle B  ist damit die Verknüpfung nach A weg.

    Ich suche nun einer Anweisung nur den Inhalt der Tabelle B zu löschen bzw. mit 'Blank' zu überscheiben.

    z.B: Woksheet.Range["A1", "U200"].Value = ""; funktioniert nicht.

    Muss ich da eine rekursive Schleife aufsetzen um die Zelleninhalte einzeln zu löschen?

    VG

    Carl-Heinz

    Mittwoch, 18. Januar 2017 09:03
  • Hallo Carl-Heinz,

    in dem Fall ist das doch nicht so schwierig.

    wenn die zu löschende Tabelle selbst keine Verknüpfungen enthält (WS ist das worksheet mit den Daten):

    WS.UsedRange.ClearContents();


    Falls die Tabelle auch Verknüfungen enthält die nicht gelöscht werden dürfen:

    foreach (Excel.Range item in WS.UsedRange) { if (!item.HasFormula) { item.ClearContents(); } }

    Grüße

    Roland

    Mittwoch, 18. Januar 2017 09:41
  • Hallo Roland,

    herzlichen Dank, hat geholfen.

    Ich habe auf dem Gebiet so gut wie keine Ahnung und auch im Internet nichts gefunden.

    Gibt es denn keine Übersicht über alle EXCEL interop Anweisungen?

    VG

    Carl-Heinz

    Mittwoch, 18. Januar 2017 09:56
  • Hallo Carl-Heinz,

    als Dokumentation nutze ich immer die EXCEL-VBA-Dokumentation.

    Aus meiner Sicht sind im Interop-Interface alle Excel Klassen und Methoden und Eigenschaften wie in der VBA-Dokumentation nutzbar. Manchmal muss man mit den Datentypen etwas aufpassen, und natürlich an die Übersetzung VBA -> C# denken, was aber bei einzelnen Methoden-Aufrufen nicht so schwierig ist.

    Grüße

    Roland

    Mittwoch, 18. Januar 2017 10:22
  • Hallo Carl-Heinz

    Vielen Dank für deine Ausführungen. Ich stelle mich etwas blöd an, da ich neu im Programmieren von C# bin.

    Kannst du mir einen Tip geben bezüglich meinem Problem?

    in meinem Excel stehen in der Spalte A diverse Texte. Jetzt will ich alle Texte dieser Spalte löschen ausser dem Text Pensionierung.

    Was für einen Code muss ich da schreiben?

    Grüsse Muuude

    Freitag, 6. Oktober 2017 08:23