Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel Export und Unicode (https://www.delphipraxis.net/144913-excel-export-und-unicode.html)

martinf16 19. Dez 2009 17:17


Excel Export und Unicode
 
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!

Bernhard Geyer 20. Dez 2009 15:53

Re: Excel Export und Unicode
 
Kann es sein das die Schweizer hier nur Nicht-Unicodefähige XLS-Dateien erzeugen? Bei MS gibt's 'ne Formatbeschreibung

martinf16 20. Dez 2009 21:25

Re: Excel Export und Unicode
 
Ja, so etwas in der Art habe ich mir ja auch gedacht. Also das man Excel eben sagen muss, dass es sich explizit um Unicode handelt. Vielen Dank für das Dokument, ich werde mich da mal durchkämpfen. Besonders das Kapitel BIFF8 und Unicode Strings scheint ja schon mal in die Richtung zu gehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz