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 '0.00' klappt nicht (https://www.delphipraxis.net/137557-excel-export-numberformat-0-00-klappt-nicht.html)

hoika 23. Jul 2009 11:59


Excel -Export, NumberFormat '0.00' klappt nicht
 
Hallo #,

mit folgendem Code wird wird eine Zelle formatiert.

Delphi-Quellcode:
sFormat:= 'Standard'; // in engl. delphis muss es 'General' heissen ...
sRef:= RefToCell(iCol+1, iRow+1);
Sheet.Range[sRef,sRef].NumberFormat:= sFormat;
Klappt soweit, nur erkennt Excel damit nur selber das Format.
Eie ursprünglich 1,00 wird zu 1.

Nehme ich '0.00' (laut Makro ist das so) kommt eine
Fehlermeldung "NumberFormat konnte nicht gesetzt werden".

Nehme ich '0,00' wird ein benutzerdefiniertes Format angelegt,
was Murks wird (Zellen lassen sich nicht summieren).

Wie heisst den das richtige Format ?

#Update:#
Es scheint doch zu klappen,
ist aber doch nicht das richtige für mich.


Danke


Heiko

nahpets 24. Jul 2009 09:09

Re: Excel -Export, NumberFormat '0.00' klappt nicht
 
Hallo,

versuch es mal mit
Delphi-Quellcode:
sFormat := '#.###.##0,00';
sRef:= RefToCell(iCol+1, iRow+1);
Sheet.Range[sRef,sRef].NumberFormat:= sFormat;

hoika 24. Jul 2009 09:24

Re: Excel -Export, NumberFormat '0.00' klappt nicht
 
Hallo,

danke für den Tip.
Das Problem hat sich "gelöst".
Da es eine allgemeine Export-Funktion ist,
darf ich gar kein "Numeric"-Format nehmen.

Das sieht bei Personalnummern sonst merkwürdig aus ;)

Was nervt ist, dass er ziemlich lange braucht zum Formatieren.
Das ich aber jede Zelle einzeln anfasse, liegt es wohl daran.

Wenn ich mal Zeit habe, lasse ich mir da was einfallen.


Heiko

nahpets 24. Jul 2009 09:37

Re: Excel -Export, NumberFormat '0.00' klappt nicht
 
Hallo,

ein kleiner Auszug aus einem meiner Programme, eventuell hilft Dir das etwas:
Delphi-Quellcode:
Var
          fSummeExcel  : Extended;
          fSummeIV     : Extended;
          fDifferenz   : Extended;
          fMonatsUmsatz : Extended;
          sEMessage    : String;
          iErrorCode   : Word;
          sExcelFile   : String;
          sTabelle     : String;
          iRecordCount : Integer;
          i            : Integer;
          lcid         : Integer;
          ea           : TExcelApplication;
          ewb          : TExcelWorkbook;
          ews          : TExcelWorkSheet;
         
begin
  // Dat dauert wat.
  Screen.Cursor := crHourGlass;
  // Diese ID wird zur Kommunikation mit Excel benötigt.
  lcid    := LOCALE_USER_DEFAULT;
  Try  
    // Summenvariabeln initialisieren.
    fSummeExcel := 0;
    fSummeIV   := 0;
    // SQL-Statement für Summe der Umsätze holen
    fmDataBase.qrySelect.SQL.Text := fmDataBase.fnGetSQL(100);
    // und Jahreszahl zuweisen.
    fmDataBase.qrySelect.ParamByName('JAHR').AsInteger := StrToInt(Trim(meGeschaeftsJahr.Text));
    // Variabeln für die Verbindung zu Excel initialisieren
    ea := TExcelApplication.Create(Self);
    ewb := TExcelWorkbook.Create(Self);
    ews := TExcelWorksheet.Create(Self);
    Try
      // Verbindungsart festlegen - grundsätzlich eine neue Instanz von Excel starten.
      // Dies ist wichtig, da sonst Probleme mit einem bereits offenen Excel
      // entstehen können.
      ea.ConnectKind := ckNewInstance;
      ewb.ConnectKind := ckNewInstance;
      ews.ConnectKind := ckNewInstance;
      // Excel soll unsichtbar arbeiten, sichtbar wird es seeeeeeehr langsam.
      ea.Visible[lcid] := False;

.. diverses Allerlei

    Finally
      // Verbindung zu Excel beenden.
      Try
        ewb.Disconnect;
        ews.Disconnect;
        ea.Application.Quit;
        ea.Disconnect;
        ea.Quit;
        ews.Free;
        ewb.Free;
        ea.Free;
      Except
        On e : Exception Do Begin
          MessageDlg('Fehler beim Trennen der Verbindung zu Excel. ' + #13 + e.Message,mtError,[mbok],0);
        End;
      End;
    End;
  Except
    On e : Exception Do Begin
      MessageDlg(e.Message,mtError,[mbok],0);
    End;
  End;
  Screen.Cursor := crDefault;
end;

hoika 24. Jul 2009 10:44

Re: Excel -Export, NumberFormat '0.00' klappt nicht
 
Hallo,

Zitat:

Verbindungsart festlegen - grundsätzlich eine neue Instanz von Excel starten.
Sas ist interessant.

Usichtbar ist es bei mir auch.
Danke


Heiko


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