AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel-Export NumberFormat General

Ein Thema von hoika · begonnen am 22. Jul 2009 · letzter Beitrag vom 17. Nov 2009
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

Excel-Export NumberFormat General

  Alt 22. Jul 2009, 15:49
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
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Excel-Export NumberFormat General

  Alt 22. Jul 2009, 16:26
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
Heiko
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#3

Re: Excel-Export NumberFormat General

  Alt 17. Nov 2009, 10:26
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.
Miniaturansicht angehängter Grafiken
beispiel_111.jpg  
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Excel-Export NumberFormat General

  Alt 17. Nov 2009, 11:07
Hallo,

hast du mal General statt Standard ausprobiert ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#5

Re: Excel-Export NumberFormat General

  Alt 17. Nov 2009, 11:34
Ja, klappt aber nicht.
Ich setze die Formatierung folgendermaßen:

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
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#6

Re: Excel-Export NumberFormat General

  Alt 17. Nov 2009, 12:00
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 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