ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
816
816
EMPFEHLEN
-
27.01.11 15:12 #1
- Registriert seit
- Nov 2010
- Ort
- Hamburg
- Beiträge
- 8
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 :1
workbook.create((Sheet) meinvoherErstelltesSheet);
Grüße ausHH
-
27.01.11 23:34 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
schau dir mal JOpenDocument http://jopendocument.org/start_spreadsheet_1.html an, damit kann man so etwas machen - und zwar im freien OpenDocument-Format, das neuere Versionen von Microsoft office auch unterstützen müssten.
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
28.01.11 08:42 #3
- Registriert seit
- Nov 2010
- Ort
- Hamburg
- Beiträge
- 8
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
-
28.01.11 10:16 #4
- Registriert seit
- Jun 2009
- Beiträge
- 870
… oder ich habs überlesen

Da scheint es 2 populäre zu geben:
JExcelAPI http://jexcelapi.sourceforge.net/ http://www.andykhan.com/jexcelapi/tutorial.html
und Apache POI http://poi.apache.org/
hier ein Vergleich: http://www.ordix.de/ORDIXNews/1_2008...i_jakarta.htmlCode bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
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.
-
29.01.11 11:18 #7
- Registriert seit
- Jun 2009
- Beiträge
- 870
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
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
31.01.11 08:42 #8
- Registriert seit
- Nov 2010
- Ort
- Hamburg
- Beiträge
- 8
@Wakoz
Ja, so habe ich das jetzt auch als alternativlösung gemacht, das andere hät ich halt schicker gefundenDu 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.
Gute Idee bin ich gar nicht selbst drauf gekommen, obwohls ja eigentlich offensichtlich ist...trotzdem lass ich jetzt den mehrDim ArrayDu 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.
Doc hab ich schon durchgemacht, also für alle zur Info es gibt keine Funktion welche ein bereits vorhandenes Sheet durch ein erstelltes ersetzt.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.
@geno
Neee, der Aufwand ist es net Wert
und konsistente Daten werden total überbewertet ;
Grüße und trotzdem Danke!Geändert von airBullmer (31.01.11 um 14:45 Uhr)
-
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
-
31.01.11 14:45 #10
- Registriert seit
- Nov 2010
- Ort
- Hamburg
- Beiträge
- 8
mein Fehler wollte Sheet sagen....habs im Text geändert..
-
Ich Verstehe gerade Überhaupt nicht warum es Im WB keine Methode gibt die ein sheet aufnimmt, vielleicht könntest du dir eine eigene schreiben?
vielleicht dabei auch ein bestimmtes sheet überschreibt, also genau das tut was du möchtest.
-
31.01.11 15:10 #12
- Registriert seit
- Nov 2010
- Ort
- Hamburg
- Beiträge
- 8
Tja, wundert mich auch ein bisschen das es sowas nicht gibt.
Wüsste nicht wie ich es schreiben sollte...Höchstens alle Sheets speichern, Workbook löschen, mein Sheet ersetzen, alle wieder zu neuem Workbook hinzufügen...denk des is bissle overdone...
-
Es gibt für das WB Eine remove methode mit der du einzelne sheets aus dem wb löschen kannst, alles was dir dann noch fehlt ist halt die methode die dein sheet ins wb übernimmt
eine Klasse die das HSSFWorkbook oder das ander XSSFWorkbook extendet und um die Methode addsheet erweitert solte reichen wobei du vorher verstehen musst wie das Workbook die einzelnen sheets intern verwaltet
-
31.01.11 15:25 #14
- Registriert seit
- Nov 2010
- Ort
- Hamburg
- Beiträge
- 8
jup, das müsste ich. Und Neee will ich gar nicht! Mach ich nicht, meine Methode geht auch und sooooo wichtig ist nu auch nicht...
Ähnliche Themen
-
Excel Sheets auslesen
Von Soilder im Forum Visual Basic 6.0Antworten: 17Letzter Beitrag: 21.07.10, 12:39 -
[Excel/VBA] Dynamisch Hyperlinks zu Sheets erstellen
Von timgkeller im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 03.09.08, 09:16 -
ASP.NET, C#: Excel Sheets einlesen und wieder exportieren
Von silmepurpurdrache im Forum .NET Web und KommunikationAntworten: 5Letzter Beitrag: 28.08.07, 19:36 -
VBA Excel - Mehrere Sheets kopieren
Von Doni im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 23.12.04, 17:09 -
Selektierte Excel-Sheets per Email verschicken
Von El Schorero im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 13.05.04, 15:15





Zitieren
Login





