Einzelnen Beitrag anzeigen

GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#29

Re: Excel - Export ohne Excel - Problem beim erzeugen

  Alt 19. Jun 2009, 09:26
@ alphaflight83:

chemiker hat ja schon auf seinen Link in #19 hingewiesen. Hier
noch einige zusätzliche Erläuterungen zum Quelltext von chemiker:

Delphi-Quellcode:
const
   XLS_WORKBOOK = $5; // nur Workbook und separate Sheets
   XLS_WORKSSHEET= $10; // Sheet or dialogue record (s.S.136 Dokument s. oben)
   XLS_BOF = $809; // BIFF5 bis BIFF8 (s.S.135 Dokument s. oben)
   XLS_BIFFVER = $600; // BIFF8 (s.S.136 Dokument s. oben)
   XLS_LABEL = $204; // (s.S.187, 5.63 Dokument s. oben)
   XLS_EOF = $A0; // (s.S.161, 5.37 Dokument s. oben)
   XLS_EXCEL_VERSION = 1;

type
  TXLS_BOFRec= packed record // Start des Datenblockes
    RecCode: Word; // $809 BOF
    RecLaenge: Word; // Record Länge // Komplett 16/ normal 8
    BIFFVersion: Word; // $600 BiffVersions-Nummer 8
    Bereich: Word; // $10 = Worksheet
    ExcelVersion: Word; // muss nicht angegeben werden (z.B. 2719=Excel 2000)
    ExcelDatum: Word; // muss nicht angegeben werden
  end;
Delphi-Quellcode:
procedure TXLS_DateiClass.XLS_BOFRecDatenFuellen;
begin
  with FBOF do
    begin
      RecCode:= XLS_BOF ; // $809
      RecLaenge:= 8;
      //BIFFVersion:= XLS_BIFFVER; // $600 BIFF8
      BIFFVersion:= 1; // kein BIFF8
      Bereich:= XLS_WORKSSHEET; // $10
      ExcelVersion:= 1;
      ExcelDatum:= 0;
    end;
end;
Setze ich die BIFF-Version auf 8 durch $600, erhalte ich auch diese schmucken
Kästchen und Sonderzeichen. BIFF8 ist Unicodefähig. Aber in der erzeugten Datei
sind die Texte / Daten, die eigentlich in die Zellen geschrieben werden sollen,
unvollständig bzw. verschoben.
Excel liest (parst) diese Streams und erwartet an einer bestimmten Position auch
bestimmte Angaben für die Formatierung usw. Stehen an diesen Stellen aber z.B.
Texte für die Zellen, muß das schief gehen. Das Problem ist also, den Buffer des
Streams korrekt zu füllen. Insbesondere, was die Zeichenlängen und Zeilenendezeichen
betrifft.

Gruß
Gerald

edit: Die Seitenangaben beziehen sich auf das Dokument compdocfileformat.pdf
(s. Beitrag #19).
  Mit Zitat antworten Zitat