In C # verwende ich das Excel-Interop, um das Schreiben mehrerer Zellenwerte zu beschleunigen

8

Ich habe ein Stück Hardware, für das ich 30 Datenpunkte bekomme. Jeder dieser Punkte wird in einer Tabellenkalkulation an mehreren verschiedenen Stellen aufgezeichnet, bevor das Blatt sichtbar gemacht wird. Dann übernimmt ein anderes Programm die Excel-Tabelle. Es ist erforderlich, dass alle diese Werte in die Tabelle geschrieben werden, bevor das andere Programm übernimmt. Wenn ich jede Zelle einzeln schreibe, dauern die Schreibvorgänge ungefähr 50 ms, was ungefähr 1,25 Sekunden dauert, um die Datenerfassung abzuschließen.

Wenn ich alle Werte gleichzeitig in die Tabellenkalkulation schreiben könnte, würde das das Schreiben aller dieser Zellen erheblich beschleunigen. Das Problem, das ich sehe, ist, dass Bereiche sehr gut für die Aktualisierung zusammenhängender Zellen arbeiten, wo meine Daten nicht zusammenhängend sind. Im Wesentlichen wäre dies ein Beispiel für das, was ich schreiben möchte:
A1 = 1
B23 = ein
F8 = 2012/12/25
D53 = 4.1235
B2 = 5

Ich habe versucht, einen Bereich von "A1, B23, F8, D53, B2" zu erstellen, und setze dann die Werte mit einem Array von Werten. Ich habe 3 verschiedene Arrays ausprobiert: Objekt [5], Objekt [1,5] und Objekt [5,1]. Diese setzen alle Werte der angegebenen Zellen im Bereich auf den ersten Index des Arrays, das ich in allen Fällen erstellt habe.

Gibt es eine Möglichkeit, diese 30-Zellen-Daten zu aktualisieren, ohne nacheinander die Zellen durchlaufen zu müssen?

Danke, Tom

    
bunggo 16.05.2012, 05:14
quelle

3 Antworten

3

Wenn Ihre Architektur es zulässt, verwendet eine andere Idee ein ausgeblendetes Blatt mit einem fortlaufenden rechteckigen Bereich, setzt Namen auf seine Teile und verwendet diese Namen auf allen anderen Blättern.

    
Eugene Ryabtsev 13.06.2012, 03:04
quelle
0

Ich würde ein rechteckiges Bereichsobjekt definieren, das alle Zellen enthält, deren Werte Sie ändern möchten. Ruft ein rechteckiges object[,] -Array aus der Werteigenschaft dieses Bereichs ab. Schreiben Sie die neuen Werte in das Array und legen Sie dann den Wert des Bereichs mithilfe des modifizierten Arrays fest.

    
phoog 16.05.2012 05:36
quelle
0

Sie könnten die Werte in zusammenhängende Zellen schreiben, die irgendwo im Weg sind, etwa in Spalte X, und Formeln in den Zielzellen haben, die sich auf diese aktualisierten Zellen beziehen. So hätte Zelle A1 die Formel "= X1", Zelle B23 "= X2" und so weiter.

    
oldcoder 08.06.2012 15:01
quelle

Tags und Links