![]() |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Zitat:
|
Re: Excel - Export ohne Excel - Problem beim erzeugen
Tahoma und Arial haben unicode zeichen...
wenn ich die DAtei dann aufmach, und manuell irgendwelche Kyrillischen zeichen oder so eingibt funktioniert das ja auch ganz prima |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Muss das hier mal wiederbeleben.
Mit Delphi 2009 brauche ich hier nun auch Unicode. Wenn ich in der Funktion
Delphi-Quellcode:
für Value AnsiString statt String verwende funktoniert die Funktion wie früher,
procedure TXLSExport.Write(const Col, Row: Word; const Value: string);
allerdings will ich ja nun auch Unicode in den Exports benutzen. Die Frage von Zerolith wurde damals nicht beantwortet. Auch ich bekomme Kästchen in den Feldern, allerdings "nur" jedes zweite Zeichen. Die Länge der Strings wäre an sich richtig, nur dass eben immer ein Kästchen reingequetscht wird, wodurch die Hälfte des Strings unter den Tisch fällt. Als Standard Schriftart habe ich in Excel Arial Unicode MS eingestellt, es liegt also definitiv nicht an Excels Schriftart. Kann das an der Dereferenzierung liegen?
Delphi-Quellcode:
Hab unlängst mal gelesen, dass die Dereferenzierung mit "Pointer" nicht so richtig funktioniert !?!
XlsStream.WriteBuffer(Pointer(AValue)^, L);
Edit: Anscheinend nicht, auch die Spezifizierung durch PWideString, bzw PUnicodeString bringt keinen Effekt |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Hallo alphaflight83,
in der CodeLib gibt es auch eine Unit um Excel-Dateien, ohne Excel zu erzeugen. ![]() Bis bald Chemiker |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Zitat:
![]() |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Zitat:
Danke mal dafür. |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Hi,
ich brüte auch gerade über diesem Thema. @Chemiker: Setze ich
Delphi-Quellcode:
um mit BIFF8 zu arbeiten, bekomme ich auch so niedliche Kästchen.
BIFFVersion:= XLS_BIFFVER // XLS_BIFFVER = $600
Allerdings nicht in allen Feldern. Hauptsächlich in Zeichenfeldern, die Ziffern enthalten. Die Anpassung an D2009 habe ich auch probiert - allerdings ohne Erfolg. Die Kästchen und kryptischen Zeichen bleiben. Grund für die Anpassung an BIFF8 ist die Notwendigkeit, mehr als ein Worksheet zu erstellen und mit Daten zu füllen. Soweit ich das bisher in Erfahrung bringen konnte, ist dafür BIFF8 erforderlich. Oder nicht?? Wie erstelle ich weitere Worksheets und gebe ihnen noch treffende Namen? Im Übrigen ist Dein Tool super. Danke dafür. Aktuell: D2007, Daten aus BlackFish (Unicode) und Excel 2003 (SP3). Gruß, Gerald |
Re: Excel - Export ohne Excel - Problem beim erzeugen
So jetzt kann ich mich wieder mal diesem Thema zuwenden.
Hab das jetzt mal ausprobiert und Chemikers Funktion verwendet, allerdings bleiben auch hier noch die Kästchen-Steuerzeichen hinter jedem Char in der Tabelle. Die Änderung bewirkt immerhin, dass die Strings nicht abgeschnitten werden. Mit TXLSExport erreicht man das durch Änderung der Prozedur Write
Delphi-Quellcode:
Aber, wie gesagt, die Kästchen sind in beiden Fällen weiterhin da.
procedure TXLSExport.Write(const Col, Row: Word; const Value: String);
var L: Word; begin L := Length(Value) * SizeOf(Char); // <- CXlsLabel[1] := 8 + L; CXlsLabel[2] := Row; CXlsLabel[3] := Col; CXlsLabel[5] := L; fs.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel)); fs.WriteBuffer(Pointer(Value)^, L); end; Die Stringlänge bei TXLSExport vor der Änderung wäre an sich wie gesagt auch richtig, wenn die Kästchen den String nicht dehnen würden. Kann es sein, dass noch ein De-/Codier-Schritt fehlt, um das zum laufen zu bringen? Edit: Hab grade festgestellt, dass die Exportierung immer noch als Ansi abläuft. Dann hat der Excel Export an sich erst mal gar nichts damit zu tun und ich muss eine Ebene drunter Fehlersuche betreiben. |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Hallo alphafligt83, GHorn,
Zitat:
Man kann die Routinen natürlich erweitern um weitere Sheets in einem Workbook anzulegen, allerdings wird dadurch das ganze etwas aufgebläht. Das gleiche gilt für Formatierungen, Schriftgröße usw. Ich bin bisher nicht in die Verlegenheit gekommen Unicode zu benutzen, ich habe nur die Unit so angepasst das ich das StringGrid mit den Zufallswerten mit Delphi 2009 benutzen kann und eine Excel-Datei erhalte die alle Übertragen Daten in Excel 2007 anzeigt und nicht zum Teil die Daten abschneidet. In diesem Link steht wie das Biff-Format aufgebaut ist: ![]() Bis bald Chemiker |
Re: Excel - Export ohne Excel - Problem beim erzeugen
Momentan bin ich immer noch am suchen, wie ich einen TFileStream dazu bringe die Encoding auf UTF8 zu setzen.
Bei einem normalen SaveToFile ist das ja kein Ding
Delphi-Quellcode:
Aber beim Stream hab ich bisher noch keine Option gefunden.
StringList.SaveToFile(ExportFilename, TEncoding.UTF8);
Kann natürlich auch sein, dass ich das an anderer Stelle setzen muss !?! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz