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 Zelle formatieren? (https://www.delphipraxis.net/138390-excel-export-zelle-formatieren.html)

gandime 9. Aug 2009 15:21


Excel export Zelle formatieren?
 
Hi,
momentan benutze ich die XLSDateiUnit um ein Stringgird in Excel zu exportieren.
Bei dieser Unit ist ja eine Formation der Zellen nicht möglich...
Folgendes record immer vor einer Zelle in die Datei geschrieben:
Delphi-Quellcode:
  TXLS_LABELRec= packed record   // String-Record von Excel
    RecCode: Word;               // $204 Bei Biff 8
    RecLaenge: Word;             // Record Länge // muss zuvor berechnet werden
    Row: Word;                   // Zeilen-Nr. beginnt bei 0
    Col: Word;                   // Spalten-Nr. beginnt bei 0
    IndexXFRec: Word;            // noch nicht ganz verstanden // erstmal=0
    ZellenStLeange: Word;        // Nur die ZellenString-Länge
  end;
wobei wenn überhaupt IndexXFRec für eine Formation in Frage kommt, aber auch wenn ich den Wert ändere werden die Zellen unformatiert exportiert.

Gibt es vlt eine andere Komponente o.ä. bei der man Zellen formatieren kann?
Die einzigen Formationen die ich bräuchte wären: Fett, Unterstrichen und Rahmenlinien unten. Falz es noch möglich wäre die Schriftgröße zu ändern wäre das natürlich super muss aber nicht sein!

Es kann auch gerne eine Komponente sein, welche Excel benutzt.

mfg

gandime

mkinzler 9. Aug 2009 15:23

Re: Excel export Zelle formatieren?
 
Kann von einem installierten Excel auf dem Rechner ausgegangen werden?

gandime 9. Aug 2009 15:28

Re: Excel export Zelle formatieren?
 
Zitat:

Zitat von mkinzler
Kann von einem installierten Excel auf dem Rechner ausgegangen werden?

Zitat:

Zitat von gandime
Es kann auch gerne eine Komponente sein, welche Excel benutzt.

also ja ;-)

toms 9. Aug 2009 15:29

Re: Excel export Zelle formatieren?
 
Zitat:

Zitat von mkinzler
Kann von einem installierten Excel auf dem Rechner ausgegangen werden?

Zitat:

Zitat von gandime
Es kann auch gerne eine Komponente sein, welche Excel benutzt.


Chemiker 9. Aug 2009 16:46

Re: Excel export Zelle formatieren?
 
Hallo gandime,


nur mit einer Änderung des Wertes ist es nicht getan, eigentlich ist es eine Adresse wo der Formatierungs-Record der jeweiligen Zelle steht.

Vielleicht hilft Dir dieser Link weiter:

StringGrid mit OLE nach Excel

Bis bald Chemiker

gandime 9. Aug 2009 18:39

Re: Excel export Zelle formatieren?
 
@Chemiker:
Danke für die Seite!
Das hat mir einen ersten EInblick verschafft!

Gerade zu etwas anderem von dir^^
bei deiner XLSDateiUnit solltest du bei der
Delphi-Quellcode:
function DatenInXLSDateiUebertragen(const XLS_LWPathDateiName: string; DatenStringGrid: TStringGrid): boolean;
eine abfrage machen beevor du die Zelle eintragen lässt.
Delphi-Quellcode:
if inhalt<>'' then
damit keine Leeren Felder hinzugefügt werden. (Kann bei längerem Zelleninhalt dazu führen das es nicht komplett sichtbar ist)


Mit hilfe von SwissDelphiCenter.ch und Delphi-Forum.de
habe ich jetzt einen funktionierenden Excel export mit Zellenformation.

was wie folgt aussieht:
Delphi-Quellcode:
const
  // SheetType
  xlChart = -4109;
  xlWorksheet = -4167;
  // WBATemplate
  xlWBATWorksheet = -4167;
  xlWBATChart = -4109;
  // Page Setup
  xlPortrait = 1;
  xlLandscape = 2;
  xlPaperA4 = 9;
  // Format Cells
  xlBottom = -4107;
  xlLeft = -4131;
  xlRight = -4152;
  xlTop = -4160;
  // Text Alignment
  xlHAlignCenter = -4108;
  xlVAlignCenter = -4108;
  // Cell Borders
  xlThick = 4;
  xlThin = 2;
  xlEdgeLeft=7;
  xlEdgeTop=8;
  xlEdgeBottom=9;
  xlEdgeRight=10;
  xlInsideVertical=11;
  xlInsideHorizontal=12;

var
  ExcelApp:Variant;

begin
  try
    ExcelApp := GetActiveOleObject('Excel.Application');
  except
    try
      ExcelApp := CreateOleObject('Excel.Application');
    except
      ShowMessage('Cannot start Excel/Excel not installed ?');
      Exit;
    end;
  end;
  ExcelApp.Workbooks.Add(xlWBatWorkSheet);
  ExcelApp.Cells[1,1].Value := 'Delphi-Praxis';
  ExcelApp.Cells[2,1].Value := 'http://www.delphipraxis.net';
  ExcelApp.Cells[1,1].Font.size:=10;
  ExcelApp.Cells[2,1].Font.Bold:=true;
  ExcelApp.Cells[2,1].Font.underline:=true;
  ExcelApp.Cells[3,1].Borders[xlEdgeBottom].Weight := xlThin;
  ExcelApp.ActiveWorkBook.Close(SaveChanges := True, Filename := Directory);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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