Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Excel: Zelle als "Text" formatieren (https://www.delphipraxis.net/176501-excel-zelle-als-text-formatieren.html)

Helmi 10. Sep 2013 19:43


Excel: Zelle als "Text" formatieren
 
Hallo,

wie kann ich eine Excel-Zelle als "Text" formatieren?
Leider finde ich im Forum nur Datumsformatierungen

Schreiben tu ich so in die Excel-Datei:
http://www.delphipraxis.net/171539-e...cel-datei.html

p80286 10. Sep 2013 20:46

AW: Excel: Zelle als "Text" formatieren
 
Delphi-Quellcode:
   
    excel.activesheet.cells(1,j+1).EntireColumn.NumberFormat:='@';
    excel.activesheet.EntireColumn.Cells(1,2).NumberFormat:= '@';
    excel.activesheet.cells(1,j+1).NumberFormat:='@';
    excel.activesheet.Cells.NumberFormat := '@';
Es gibt mehrere Möglichkeiten, probier's mal aus.

Gruß
K-H

Aviator 10. Sep 2013 20:48

AW: Excel: Zelle als "Text" formatieren
 
Hallo Helmi,

hatte mir mal eine Funktion geschrieben um immer die entsprechende Formatierung zu erhalten.

Delphi-Quellcode:
function GetFieldDataType(QueryField: TField): Ansistring;
  const
    FORMAT_GENERAL = 'General';
    FORMAT_STANDARD = 'Standard';
    FORMAT_TEXT    = '@';
    FORMAT_DEZIMAL = '0.00';
    FORMAT_INTEGER = '0';
    FORMAT_DATE    = 'dd.mm.yyyy';
    FORMAT_DATETIME = 'dd.mm.yyyy hh:mm:ss';
    FORMAT_CURRENCY = '$#,##0.00_);[Red]($#,##0.00)';
    FORMAT_TIME    = 'hh:mm:ss';

  begin
  //if QueryField.FieldName = 'Gesamtsumme' then ShowMessage(TMTools.FieldTypeToStr(QueryField.DataType));
    case QueryField.DataType of
      ftUnknown:  Result := FORMAT_TEXT;
      ftAutoInc:  Result := FORMAT_INTEGER;
      ftString:   Result := FORMAT_TEXT;
      ftSmallint: Result := FORMAT_DEZIMAL;
      ftInteger:  Result := FORMAT_INTEGER;
      ftWord:     Result := FORMAT_STANDARD;
      ftBoolean:  Result := FORMAT_TEXT;
      ftFloat:    Result := FORMAT_DEZIMAL;
      ftCurrency: Result := FORMAT_CURRENCY;
      ftDate:     Result := FORMAT_DATE;
      ftDateTime: Result := FORMAT_DATETIME;
      ftMemo:     Result := FORMAT_TEXT;
      ftWideMemo: Result := FORMAT_TEXT;
      ftBCD:      Result := FORMAT_INTEGER;
      ftTime:     Result := FORMAT_TIME;
      else        Result := FORMAT_TEXT;
    end;
  end;
Hat bisher immer funktioniert.
Text also mit @ formatieren. Und immer daran denken, die Formatierung auszuführen bevor du die Zelle füllst.

Ein Aufruf könnte dann so aussehen:

Delphi-Quellcode:
Excel.Sheets[TableName].Cells[Zeile, Spalte].NumberFormat := GetFieldDataType(SourceQuery.Fields[I]);
Excel.Sheets[TableName].Cells[Zeile, Spalte].Value := SourceQuery.Fields[I].AsString;

Helmi 11. Sep 2013 15:51

AW: Excel: Zelle als "Text" formatieren
 
Hallo,

Danke für die Antworten.

Ich habe jetzt:
Delphi-Quellcode:
Excel.ActiveSheet.Cells[Zeile, 3].NumberFormat := '@';
.

Schau ich mir dann in Excel die Formatierung der Zelle an, so ist "benutzerdefiniert" aktiv
und nicht Text. Geht das nicht anders, oder fehlt noch etwas?

p80286 11. Sep 2013 16:36

AW: Excel: Zelle als "Text" formatieren
 
Soweit ich weiß, ist alles was nicht von Excel kommt "Benutzerdefiniert".

Aber wie Aviator schrieb "hat bisher immer funktioniert"

Gruß
K-H

Helmi 11. Sep 2013 16:59

AW: Excel: Zelle als "Text" formatieren
 
bei mir leider nicht

ich übergebe einer Zelle den Text "4:" - in Excel steht dann in der Zelle "64"

Olli73 11. Sep 2013 18:37

AW: Excel: Zelle als "Text" formatieren
 
Zitat:

Zitat von Helmi (Beitrag 1227991)
ich übergebe einer Zelle den Text "4:" - in Excel steht dann in der Zelle "64"

Ach, das kenn ich: Vor allem wenn vorher alles lief, man das Projekt dann von Delphi 7 auf 2009 umstellt, man selber natürlich nichts bemerkt und der Kunde am Telefon plötzlich etwas von "alles 64" erzählt ;)

Ein
Code:
... := AnsiChar('@');
schafft aber Abhilfe.

Helmi 11. Sep 2013 18:49

AW: Excel: Zelle als "Text" formatieren
 
Vielen Dank! :-D
Mit AnsiChar funktioniert das Ganze und im Excel wird das Format "Text" angezeigt!

Aviator 11. Sep 2013 21:10

AW: Excel: Zelle als "Text" formatieren
 
Also der Rückgabetyp meiner Funktion ist Ansistring. Das man das @ als Char übergeben kann ist ja dann eigentlich das selbe (denke ich zumindest). :roll:

Helmi 11. Sep 2013 21:15

AW: Excel: Zelle als "Text" formatieren
 
Zitat:

Zitat von Aviator (Beitrag 1228028)
Also der Rückgabetyp meiner Funktion ist Ansistring. Das man das @ als Char übergeben kann ist ja dann eigentlich das selbe (denke ich zumindest). :roll:

sorry - hab ich übersehen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr.
Seite 1 von 2  1 2      

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