Hallo,
um eine einfache Excel-Tabelle zu erzeugen, nutze ich den Code dieser Seite:
http://www.swissdelphicenter.ch/de/showcode.php?id=725
Das funktioniert auch alles fabelhaft, allerdings natürlich nicht mit
Unicode. Deswegen habe ich die Funktion etwas umgeschrieben, sprich String durch WideString ausgetauscht und SizeOf hinzugefügt.
Delphi-Quellcode:
procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
const AValue: WideString);
var
L: Word;
begin
L := Length(AValue)*SizeOf(WideChar);
CXlsLabel[1] := 8 + L;
CXlsLabel[2] := ARow;
CXlsLabel[3] := ACol;
CXlsLabel[5] := L;
XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;
Die resultierende Excel-Datei weißt keinerlei Fehler auf, allerdings werden die 2 Bytes eines jeden
Unicode Zeichens als 2
ANSI Zeichen interpretiert (Beispiel: aus 音碼 wird ó—¼x), was natürlich nicht sein sollte.
Ich nehme an, es muss nur eine Kleinigkeit geändert werden, damit es funktioniert. Vielleicht so etwas wie eine Byte Order Mark, dass Excel weiß, wie man die Daten interpretieren soll oder vielleicht auch ein anderes Format, in das der WideString erst einmal konvertiert worden muss?! Ich hoffe es weiß jemand weiter... Vielen Dank schonmal!