Erweitern Sie eine Tabelle in EPPlus C #

8

Gibt es eine Möglichkeit, eine vorhandene Tabelle in EPPlus in C # zu erweitern? Die Art, wie mein Programm funktioniert, ist, dass ich die Tabelle mit nur zwei Zeilen erzeuge und weitere hinzufügen kann. Ich kann einfach keine Art von Resize-Methode in ExcelTable finden. Gibt es hierfür eine dedizierte Methode oder muss ich eine Art Alternative verwenden?

Bearbeiten: Okay, ich werde das nur klären. Ich arbeite bereits mit EPPLus und mache eine ExcelTable. Meine Frage ist: Wie kann ich eine vorhandene ExcelTable größer machen (weitere Zeilen hinzufügen)?

    
Jordan 31.12.2015, 17:21
quelle

3 Antworten

8

Leider gibt es keine direkte Methode. Nicht ganz sicher warum, aber die Entwickler von EPPlus entscheiden sich dafür, die ExcelTable.Address -Eigenschaft nur bereit zu machen. Die naheliegendste Entscheidung wäre, eine neue Tabelle zu erstellen, alle Eigenschaften zu kopieren (vorausgesetzt, Sie kennen alle, die benötigt werden) und die alte zu löschen. Nicht sehr ideal, da Sie etwas verpassen könnten.

Aber ich sehe noch zwei andere - als nächstes entweder ganz schön, aber besser als das Kopieren / Löschen. Nimm eine Tabelle wie folgt an:

Option 1 Sie könnten den EPPlus-Quellcode verzweigen und die Eigenschaft zum Lesen / Schreiben verwenden. Sie würden dies in der Datei ExcelTable.cs tun, indem Sie Folgendes ändern:

%Vor%

, indem Sie das Schlüsselwort internal entfernen. Aber natürlich musst du vorsichtig sein, damit nicht etwas anderes kaputt geht. Mit diesem können Sie etwas tun wie:

%Vor%

Option 2 wäre die sicherere Option, aber am "schmutzigsten", wenn eine Zeichenfolge im XML-Code ersetzt wird. Wir können nicht davon ausgehen, dass es nur einen Verweis auf die Adresse gibt, weil zum Beispiel der AutoFilter eingeschaltet sein könnte. Hier sehen Sie, wie die Standard-XML-Datei aussieht, wenn Sie eine Tabelle in Excel erstellen (beachten Sie die 2 Referenzen auf die Adresse):

%Vor%

So können wir einen String wie folgt ersetzen:

%Vor%     
Ernie 31.12.2015, 21:33
quelle
4

Diese Frage ist ungefähr ein Jahr alt, aber in der Hoffnung, dass jemand noch eine Antwort braucht, gibt es eine direkte Lösung, obwohl sie wegen eines Fehlers in EEPlus nicht vollständig ist (ich arbeite mit v4.1).

ExcelWorksheet verfügt über eine Methode InsertRow (Int32, Int32, Int32) . Wenn Sie Zeilen in einem Bereich einfügen, der Teil der Tabelle ist, wird die Tabelle ebenfalls erweitert. Verwenden Sie einfach die Address-Eigenschaft, um die Grenzen zu erhalten. Stellen Sie nur sicher, dass Sie zwischen der ersten und letzten Zeile der Tabelle einfügen.

Es gibt einen Fehler, den ich über die Validierung von Zellen weiß: Selbst wenn Sie die Überladung verwenden, die Stile aus einer vorhandenen Zeile kopieren kann, wird die Validierung nicht kopiert. Schlimmer noch, die Validierung bleibt dort, wo sie war, und sie wird nicht mit den Zellen verschoben. Ich habe nicht getestet, aber ich glaube, wenn die Validierung einen Bereich und keine Zelle als Ziel hat, wird diese auch erweitert, wenn Sie Zeilen in diesen Bereich einfügen.

Dies wird Ihnen nicht helfen, wenn Sie die Tabelle für Daten im Arbeitsblatt bereits erweitern möchten - Sie können jedoch immer noch Zeilen verschieben. Und auch nicht, wenn Sie viele Tische nebeneinander haben (was ein Albtraum ist).

    
ZorgoZ 21.12.2016 10:54
quelle
-1

Sie müssen die vorhandene Excel-Tabelle in den Speicher einlesen, dann können Sie sie bearbeiten und die resultierende Datei speichern:

%Vor%     
dub stylee 31.12.2015 20:16
quelle

Tags und Links