Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Font Typ für Excel festlegen (https://www.delphipraxis.net/99309-font-typ-fuer-excel-festlegen.html)

Lill Jens 10. Sep 2007 14:17


Font Typ für Excel festlegen
 
Hey Ihr ;)

Ich hab folgenden Code hier im Forum gefunden der auch wunderbar funktioniert:

Delphi-Quellcode:
procedure DBGridToExcel(DBGrid:TDBGrid; StartSpalte, StartZeile:integer);
type TSpalten = array[1..256] of string;

  function CreateSpalten:TSpalten;
  var i, j, x:integer;
      abbruch:boolean;
  begin
    x:=1;
    abbruch:=false;
    j:=0;
    while (j <= 26) and not abbruch do begin
      i:=1;
      while (i <= 26) and not abbruch do begin
        if j = 0 then
          Result[x]:=chr(i+64)
        else
          Result[x]:=chr(j+64)+chr(i+64);
        inc(i);
        inc(x);
        abbruch:=(x > 256);
      end;
      inc(j);
    end;
  end;

var Excel:TExcelApplication;
    i, Zeile, lcid:integer;
    Workbook:_Workbook;
    Sheet, Zelle, Inhalt:Variant;
    Spalten:TSpalten;
begin
  if    assigned(DBGrid)
     and assigned(DBGrid.DataSource)
     and assigned(DBGrid.DataSource.DataSet) then
  begin
    if DBGrid.DataSource.DataSet.Active then begin
      Excel:=TExcelApplication.Create(nil);
      try
        lcid:=GetUserDefaultLCID;
        Excel.Connect;
        Excel.Visible[lcid]:=true;
        Excel.UserControl:=true;

        Workbook:=Excel.Workbooks.Add(EmptyParam, lcid);

        Spalten:=CreateSpalten;
        Zeile:=StartZeile;
        for i:=1 to DBGrid.FieldCount do begin
          Inhalt:=DBGrid.Fields[i-1].DisplayName;
          Zelle:=Excel.Cells.Range[
            Spalten[i+StartSpalte-1]+inttostr(Zeile),
            Spalten[i+StartSpalte-1]+inttostr(Zeile)
          ];
          Zelle.Value:=Inhalt;
          Zelle.Font.Bold:=true;
        end;

        DBGrid.DataSource.DataSet.First;
        while not DBGrid.DataSource.DataSet.Eof do begin
          inc(Zeile);
          for i:=1 to DBGrid.FieldCount do begin
            Inhalt:=DBGrid.DataSource.DataSet.FieldByName( 
              DBGrid.Fields[i-1].FieldName
            ).AsString;
            Zelle:=Excel.Cells.Range[
              Spalten[i+StartSpalte-1]+inttostr(Zeile),
              Spalten[i+StartSpalte-1]+inttostr(Zeile)
            ];
            Zelle.Value:=Inhalt;
          end;
          DBGrid.DataSource.DataSet.Next;
        end;

        Sheet:=Workbook.ActiveSheet;
        Sheet.Columns[
          Spalten[StartSpalte]+':'+Spalten[StartSpalte+DBGrid.FieldCount]
        ].EntireColumn.AutoFit;

      finally
        Excel.Disconnect;
        Excel.free;
      end;
    end;
  end;
end;
Mein Problem ist allerdings, dass alle Schriftarten auf Arial gesetzt werden. Allerdings will ich das meine Schriftarten aus DBGrid übernommen werden.

Thx.4.cmts


Lill Jens :coder2:

Reinhardtinho 10. Sep 2007 14:29

Re: Font Typ für Excel festlegen
 
Das hier sollte funktionieren:
Delphi-Quellcode:
Zelle.Font.Name := 'Times New Roman';
Geht natürlich nur mit installierten Schriftarten.

MFG
Lorenz

Lill Jens 10. Sep 2007 14:49

Re: Font Typ für Excel festlegen
 
Zitat:

Zitat von Reinhardtinho
Das hier sollte funktionieren:
Delphi-Quellcode:
Zelle.Font.Name := 'Times New Roman';
Geht natürlich nur mit installierten Schriftarten.

MFG
Lorenz


Installiert sind die Schriftarten natürlich ;)

Allerdings der Code nur für die Zellen ich brauch das aber für die dritte Spalte...funzt des auch ?!

Lill Jens 10. Sep 2007 15:15

Re: Font Typ für Excel festlegen
 
Also was ich jetzt rausgefunden hab und auch funktioniert ist

Delphi-Quellcode:
Excel.Cells.Range['C3', 'C3'].Font.Name:= 'Code 39';
Allerdings nur für C3, C3...wie kann ich das für die ganze C-Spalte festlegen?

Reinhardtinho 10. Sep 2007 15:24

Re: Font Typ für Excel festlegen
 
Ich kann es grade nicht testen, aber statt Cells müsste es dann glaub ich Colums heißen. :gruebel:

MFG
Lorenz

Lill Jens 10. Sep 2007 15:29

Re: Font Typ für Excel festlegen
 
Zitat:

Zitat von Reinhardtinho
Ich kann es grade nicht testen, aber statt Cells müsste es dann glaub ich Colums heißen. :gruebel:

MFG
Lorenz

Mhhh nee leider nicht bekomm dafür nen fehler

Delphi-Quellcode:
[Pascal Fehler] Unit1.pas(155): E2149 Klasse besitzt keine Standardeigenschaft
Das sind meiner meinung nach schon die cells allerdings will ich ja die ganze C-Spalte mit der schriftart...

Lill Jens 10. Sep 2007 15:31

Re: Font Typ für Excel festlegen
 
Argh ich nehm alles zurück...allerdings besteht das problem weiterhin das hier nur C3, C3 angesprochen wird

Reinhardtinho 10. Sep 2007 15:32

Re: Font Typ für Excel festlegen
 
Man könnte dann noch den Range erhöhen, aber da muss man ja auch nen Wert festlegen, z.B.:

Delphi-Quellcode:
Excel.Cells.Range['C1', 'C500'].Font.Name:= 'Code 39';
aber ein Befehl für die komplette Spalte fällt mir grade nicht ein.


MFG
Lorenz

Lill Jens 10. Sep 2007 15:35

Re: Font Typ für Excel festlegen
 
Zitat:

Zitat von Reinhardtinho
Man könnte dann noch den Range erhöhen, aber da muss man ja auch nen Wert festlegen, z.B.:

Delphi-Quellcode:
Excel.Cells.Range['C1', 'C500'].Font.Name:= 'Code 39';
aber ein Befehl für die komplette Spalte fällt mir grade nicht ein.


MFG
Lorenz


Ahhh du bist ein Held ;)

Danke jetzt geht es :-D :cheers: :dancer:

Chemiker 10. Sep 2007 19:49

Re: Font Typ für Excel festlegen
 
Hallo Lill Jens,

mit Columns ist der bessere Weg, damit wird die gesamte Spalte markiert.
In dem Beispiel wird die Spalten C bis E markiert und anschließend die neue Schrift gesetzt.


Delphi-Quellcode:
Excel.Columns['C:E'].Select;                     // Spalten markieren
Excel.Selection.Font.Name := 'Algerian';  // Für die markierten Spalten neue Schrift setzen.
Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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-2025 by Thomas Breitkreuz