Laden...

Bestpractice für virtuelle Tabelle

Erstellt von Telefisch vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.426 Views
T
Telefisch Themenstarter:in
372 Beiträge seit 2008
vor 5 Jahren
Bestpractice für virtuelle Tabelle

Hallo Ihr Wissenden,
ich bin gar nicht sicher ob der Beitrag hier richtig ist.

Ich muss einige, verschachtelte Datensätze einlesen und aus ihnen eine Excel-Tabelle erzeugen.
Inhalt der Datensätze ist u.a. die Angabe in welcher Spalte ein Wert zu stehen hat.
Da diese Information erst beim Lesen der Datensätze ermittelt werden kann, ich aber eine Excel-Tabelle von links beginnend erzeugen sollte (Also nicht Spalte B bevor A erzeugt ist), wollte ich die Datensätze zunächst in einer virtuellen Tabelle anlegen.

Es müsste also eine Tabelle sein, deren Spaltenanzahl erweiterbar ist, auch wenn sie bereits Daten enthält.
Jetzt kann ich mir diverse mehrdimensionale Arrays ausdenken oder mit Recordsets arbeiten, vielleicht mehrere Dictionaries oder oder oder...

Welcher Weg, bzw. welches Objekt wäre hier zu empfehlen, vor allem von der Performance her?

Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.

Danke und Gruß
Carsten

W
955 Beiträge seit 2010
vor 5 Jahren

Hi, reicht da nicht ein Dictionary mit Zeile und Spalte als Key?
Dictionary<(int row, int column), TValue> ?
Welche .net-Version /Compiler-Version verwendest du?

3.003 Beiträge seit 2006
vor 5 Jahren

Falls du nur nicht zum Dictionary tendiert hast aus Performance-Sorge:

Faustregel: wenn das Ergebnis eine Excel-Tabelle ist, hat man keine Performancesorgen. Ausnahmen bestätigen die Regel 😉. (Dh natürlich nicht, dass du beliebig schludern darfst, nur, dass du keine speziellen Datenstrukturen benötigst)

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

2.079 Beiträge seit 2012
vor 5 Jahren

Nur als Ergänzung:

Wenn Du mit OpenXml arbeitest, such bei Google nach "ClosedXml"
Das offizielle Framework von Microsoft, was es zum Lesen/Schreiben von OpenXml gibt, halte ich für grausam kompliziert. ClosedXml schafft es, das Lesen/Schreiben dieser Dateien denkbar einfach und intuitiv zu gestalten, da brauchst Du eigentlich nicht Mal eine Doku dazu. Mir hat es jedenfalls das Leben gerettet 😄

Es kann bloß sein, dass die Performance von dem Framework nicht die Beste ist, zumindest hab ich das gelesen. Wenn Du deine Tabellen aber auch stylen und komplexere Excel-Features nutzen willst, kommst Du mMn. nicht um ClosedXml herum, da würde ich lieber ein paar Sekunden Laufzeit in Kauf nehmen, als das 10fache an Code zu schreiben, den am Ende keiner versteht.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

T
Telefisch Themenstarter:in
372 Beiträge seit 2008
vor 5 Jahren

Hmm…
das Dictionary könnte klappen.
Auf die Idee Zeile und Spalte zu kombinieren bin ich nicht gekommen 🤔

Nun ja Performance...
Wenn ich schon den Nachmittag beim erzeugen der Tabelle vergeude könnte das herstellen der Daten aus der Datenbank je gern etwas schneller von Statten gehen 😉

Ich verwende ASP.NET MVC 5.2.6

Danke erstmal, da probiere ich mal etwas rum 🙂

PS: Danke für den Tipp mit ClosedXml. Ja, OpenXml ist gruselig!