Excel API - Sheets übergeben

airBullmer

Grünschnabel
Hallo alle zusammen,

ich habe ein Programm welches mir regelmässig (ca. 30 mal) eine Excel Datei öffnet um ca. 5 Zeilen in diese zu schreiben.
Nun würde ich gerne ein zuvor erstelltes Sheet (API), welches mit Daten gefüllt ist, meiner Datei hinzufügen, damit ich nur noch auf das Object Sheet zugreifen muss und nicht immer die gesamte Datei öffnen.

Hat einer eine Idee wie das geht****

Also am liebsten hätte ich sowas wie:
Code:
workbook.create((Sheet) meinvoherErstelltesSheet);

Grüße ausHH
 
Hi geno!

Danke deine Antwort war echt gut! Nur leider für Opendocument, ich bräuchte das ganze aber für die Excel API....sorry, hab ich vergessen zu erwähnen.

Grüße
 
Aus Persönlicher Erfahrung kann ich POI empfehlen.

Der Vergleichsartikel ist schon Paar Jahre alt und somit nicht mehr stand der Technik, zum Beispiel gab es Letztes Jahr ein Update bei POI welches den Speicherverbrauch positiv beeinflusste.

Dennoch der Hinweis es wird einiges an lauf zeit Speicher benötigt, die Standard werte der VM reichen nicht immer, weswegen man diese für eine Anwendung hochstellen sollte.


zu deiner Frage, Die Excel datei wirst du Offen halten müssen.

du kannst entweder ein sheet aus dem Dokument (Workbook) öffnen oder für dieses eine seite erzeugen. Ohne ein Offenes Workbook geht da nichts, zumindest kenne ich keine Methode die Ein sheet erzeugt ohne es mit einem Dokument zu verbinden. also ohne Workbook kein Sheet zugriff

Du hast also Zwei Möglichkeiten:
Entweder die Daten in einem Mehr Dim. Array Zwischen speichern und zu bestimmten Zeiten rüber ins Excel schreiben oder dein Workbook Öffnen aufhalten während deine Anwendung läuft und du in deinem Sheet schreibst.

Du musst aber nicht immer dein Workbook öffnen und schließen sinniger wäre es meiner Meinung nach einmal öffnen alles bearbeiten und dann schließen. Schließlich Benötigt das laden und speichern zeit welche je nach Excel Größe schon mal länger dauert was man als User schon bemerken kann.
 
Ich schreibe es lieber in einem neuen Post :)

du könntest mit POI versuchen mit Sheet sheet = <dein Excel Workbook>.getScheet(index) rauszuholen und dann dein Workbook zu schließen

wenn du fertig bist wird es aber kompliziert, weil wenn du dein WB erneut Öffnest kannst du dein Sheet nicht einfach so adden weil es wie ein neues eingefügt wird und nicht das alte ersetzt ob es eine methode gibt die das sheet ersetzt weiß ich nicht schau dir dazu die Doc an die ist sehr intuitiv.
 
Oder du speicherst den Inhalt deines Sheets in regelmäßigen Abständen ab und ersetzt dann die alte Excel-Datei durch die neue:

Schritte:
1. inhalt abspeichern in neue Datei
2. warten (z.B. nach Timer), Daten sammeln
3. gesamten Inhalt (auch der von 1.) in neue Datei schreiben
4. alte Datei (von 1.) löschen
5. neue Datei (von 3.) umbenennen

das wäre eine konsistente Methode, deine Daten zu speichern - falls der Aufwand es wert ist ;)
 
@Wakoz
Du hast also Zwei Möglichkeiten:
Entweder die Daten in einem Mehr Dim. Array Zwischen speichern und zu bestimmten Zeiten rüber ins Excel schreiben oder dein Workbook Öffnen aufhalten während deine Anwendung läuft und du in deinem Sheet schreibst.

Ja, so habe ich das jetzt auch als alternativlösung gemacht, das andere hät ich halt schicker gefunden


Du musst aber nicht immer dein Workbook öffnen und schließen sinniger wäre es meiner Meinung nach einmal öffnen alles bearbeiten und dann schließen. Schließlich Benötigt das laden und speichern zeit welche je nach Excel Größe schon mal länger dauert was man als User schon bemerken kann.
Gute Idee bin ich gar nicht selbst drauf gekommen, obwohls ja eigentlich offensichtlich ist...trotzdem lass ich jetzt den mehrDim Array

wenn du fertig bist wird es aber kompliziert, weil wenn du dein WB erneut Öffnest kannst du dein Sheet nicht einfach so adden weil es wie ein neues eingefügt wird und nicht das alte ersetzt ob es eine methode gibt die das sheet ersetzt weiß ich nicht schau dir dazu die Doc an die ist sehr intuitiv.

Doc hab ich schon durchgemacht, also für alle zur Info es gibt keine Funktion welche ein bereits vorhandenes Sheet durch ein erstelltes ersetzt.


@geno
Neee, der Aufwand ist es net Wert ;-) und konsistente Daten werden total überbewertet ;


Grüße und trotzdem Danke!
 
Zuletzt bearbeitet:
Doc hab ich schon durchgemacht, also für alle zur Info es gibt keine Funktion welche ein bereits vorhandenes Workbook durch ein erstelltes ersetzt.

Ein WB zu ersetzen kommt einem Überschreiben der Datei gleich, dafür wird keine Funktion benötigt weil das einfach durch erzeugen einer neuen Datei mit dem selben Namen und fomat gleich kommt.

Was du benötigst ist eine Funktion die mit hilfe des sheet index oder Namen ein bestimmtes sheet Löscht bzw es durch dein neues ersetzt
 

Neue Beiträge

Zurück