Benutzer mit den meisten Antworten
c# interop EXCEL Inhalt einer Tabelle löschen

Frage
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
- Als Antwort markiert Carl-Heinz Robert Mittwoch, 18. Januar 2017 09:52
-
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
- Als Antwort markiert Carl-Heinz Robert Mittwoch, 18. Januar 2017 10:30
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
-
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
-
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
- Als Antwort markiert Carl-Heinz Robert Mittwoch, 18. Januar 2017 09:52
-
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
- Als Antwort markiert Carl-Heinz Robert Mittwoch, 18. Januar 2017 10:30
-
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