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 NumberFormat General (https://www.delphipraxis.net/137517-excel-export-numberformat-general.html)

hoika 22. Jul 2009 14:49


Excel-Export NumberFormat General
 
Hallo #,

ich möchte eine Zelle als "Zahl" formatieren.
In der Zelle steht 1 drin mit NumberFormat @, also Text,

Fehlermeldung "Die NumberFormat-Eigenschaft des Range-Objektes kann nicht festgelegt werden"

Delphi-Quellcode:
 
     Format := 'General';
      Sheet.Range['E1', 'E1'].NumberFormat := Format;
Folgender Code klappt auch (kommt vom einem StringGrid Export),
daher auch das bisherige Text-Format

Delphi-Quellcode:
      Format := '@';
      Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount,
        AGrid.ColCount)].NumberFormat:= Format;

Was ich eigentlich will ist, dass Dezimalzahlen aus dem Grid
in Excel auch als Zahl verwendet exportiert werden.

Laut Makro-Recorder wäre das '0.00' -> gleiche Fehlermeldung wie oben.
Nehme ich '0,00', kommt zwar kein Fehler, aber es ist nicht direkt eine Zahl,
die Summenbildung klappt nicht.
Erst wenn ich in Excel direkt die gleiche Zahl noch einmal i die Zelle eintrage,
klappt die Summe.

Benutzt wird Excel 2000.

Was mache ich falsch ?


Heiko

hoika 22. Jul 2009 15:26

Re: Excel-Export NumberFormat General
 
Hallo,

diese blöde Excel !!!
Habe mich gerade erinnert, dass die doch die VBA'Befehle eingedeutscht hatten.

Es muss also 'Standard' heissen, statt 'General'.
Damit klappt zwar die Formatierung.

Danach den Value nochmal setzen und es klappt !!!


Delphi-Quellcode:
Sheet.Range['E2','E2'].NumberFormat := 'Standard';
Sheet.Range['E2','E2'].Value := Sheet.Range['E2','E2'].Value;
Heiko

Windwalker 17. Nov 2009 09:26

Re: Excel-Export NumberFormat General
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe fast das gleiche Problem.
Der Excel-Export klappt wunderbar und man kann mit den Spalten auch rechnen, z.B. Summen bilden.

Exportiert man jedoch in ein installiertes Excel2007 klappt das nicht mehr.
Eine Summe ist dann immer 0.
An jeder Zelle ist ein kleines Dreieck gesetzt und ich kann nur manuell jede einzelne Zelle in eine Zahl konvertieren, dann klappt auch das rechnen mit den Werten. (siehe Anhang)

Wie gesagt, erst beim Export in ein Excel 2007, ältere Excel Versionen können mit den Werten rechnen.

Könnt Ihr mir helfen?

Danke,
Sascha.

hoika 17. Nov 2009 10:07

Re: Excel-Export NumberFormat General
 
Hallo,

hast du mal General statt Standard ausprobiert ?


Heiko

Windwalker 17. Nov 2009 10:34

Re: Excel-Export NumberFormat General
 
Ja, klappt aber nicht.
Ich setze die Formatierung folgendermaßen:

Delphi-Quellcode:
Excel_WS.Range[MyRange.StartCell,MyRange.EndCell].NumberFormat := 'General';
Dabei erhalte ich diese Fehlermeldung:
Zitat:

Die NumberFormat-Eigenschaft des Range-Objektes kann nicht festgelegt werden
Excel_WS ist vom Typ:
Excel2000.TExcelWorksheet

Windwalker 17. Nov 2009 11:00

Re: Excel-Export NumberFormat General
 
Habe es gelöst!

Folgende Hilfsfunktion probiert den Wert in ein Float zu konvertieren.
Im Erfolgsfall wird dieser zurückgegeben, andernfalls der ursprüngliche String. Verwendet wird TryStrToFloat aus SysUtils.

Delphi-Quellcode:
function StringToVariant(const SourceString : string) : Variant;
var
  FloatValue : Extended;
begin
  if TryStrToFloat(SourceString, FloatValue) then
    Result := FloatValue
  else
    Result := SourceString;
end;
Das Ergebnis der Funkion weist man dann dem entsprechenden Eintrag des OleVariant-Arrays zu, welches die Exceldaten enthält:

Delphi-Quellcode:
for i := 1 to spalten_liste.Count do
begin
  Value := StringToVariant(StringGrid.Cells[i, j]);
  arr[j,i] := Value;
end;
Viele Grüße,
Sascha.


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