Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TOLeContainer und Excel Dateien im xlsx Format
Ramon - Do 28.07.11 11:55
Titel: TOLeContainer und Excel Dateien im xlsx Format
Hallo zusammen,
ich habe ein kleines Problem mit einem TOleContainer und Excel Dateien.
XLS Dateien kann ich laden und speichern. XLSX Dateien sind aber nach dem Speichern defekt. Der Weg ist der selbe:
Delphi-Quelltext
1: 2: 3:
| ole.CreateObjectFromFile(sFile, False); ole.SaveAsDocument(sFile); |
Installiert habe ich Office 2010 und Delphi 2009.
Langsam verzweifel ich ziemlich.
Gibt es vielleicht noch einen alternativen Weg aus dem OleContainer eine Excel Datei zu speichern?
Danke und Gruß
Ramon
Narses - Do 28.07.11 13:06
Moin!
Musste man nicht beim Speichern eine Dateiformatkonstante mitgeben, sonst bleibt das Format gleich? :gruebel: Einfach nur den Dateinamen ändern interessiert Excel nicht die Bohne. :idea: ;)
cu
Narses
Ramon - Do 28.07.11 13:15
Wenn weiß ich nicht wie. Die Datei ist aber auch defekt wenn ich sie in *.xls umbenenne.
Schau ich mir die Datei im Notepad an, finde ich zwischen den ganzen kryptischen Zeichen den Eintrag Excel.Sheet.12. Das müsste ja eigentlich stimmen.
Gibt es eine Möglichkeit das OleObject in eine TExcelApplication umzuwandeln?
Narses - Do 28.07.11 13:18
Moin!
Schau mal die Beiträge von
Chemiker durch, der machte AFAIR ziemlich viel mit Excel+OLE. :idea: Vielleicht schaut er ja auch beim nächsten Besuch mal hier in deinen Thread rein. ;)
cu
Narses
Ramon - Do 28.07.11 14:19
Hallo,
dank dir, aber ich glaube ich hab es jetzt.
XLSX Dateien speicher ich jetzt wie folgt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var ExcelApplication : variant; begin ole.DoVerb(ovShow); ExcelApplication := ole.OLEObject; ExcelApplication.SaveAs(sFile); |
Have a nice day
Ramon 8)
Chemiker - Fr 29.07.11 01:08
Hallo Ramon,
SaveAs ist eine Methode von Workbook und nicht von der Excel-Application. Beim Speichern müsste eigentlich eine Fehlermeldung kommen, dass SaveAs nicht unterstützt wird.
Das bedeutet, dass man das Workbook das gespeichert werden soll spezifizieren muss, dies kann man z. B. mit einem Index erreichen. Der Index entspricht der Position der Mappe1= Index1; Mappe2=Index2 usw.
Soll jetzt die Mappe1 gespeichert werden so muss sie mit dem Index angesprochen werden.
z.B.:
Delphi-Quelltext
1:
| ExcelApplication.Workbooks[1].SaveAs(FileName:= MyFileName, Fileformat:= xlNormal); |
Damit wird dann Deine Datei als .XLS Datei abgespeichert, soll die Datei als .XLSX abgespeichert werden, einfach das Fileformat weglassen.
Bis bald Chemiker
Ramon - Fr 29.07.11 11:18
Hi,
ist ja keine ExcelApplication, nur ein Variant. Oder meintest du wegen dem Namen des Variants?
Wie komm ich denn an ein Objekt der Klasse TExcelApplication?
Bis jetzt scheint es zu funktionieren.
Danke und Gruß
Ramon 8)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!