AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Excel, OLE, Formatierung beschleunigen
Thema durchsuchen
Ansicht
Themen-Optionen

Excel, OLE, Formatierung beschleunigen

Ein Thema von hoika · begonnen am 19. Aug 2009 · letzter Beitrag vom 19. Aug 2009
 
hoika

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

Excel, OLE, Formatierung beschleunigen

  Alt 19. Aug 2009, 09:55
Hallo,

nachdem ich ein StringGrid nach Excel exportiert habe,
will ich Zahlen auch als Zahl exportieren.

Problem: Das dauert ewig.

Der Code sieht wie folgt aus:

Delphi-Quellcode:
      DoubleColumnList:= TDoubleColumnList.Create;
      try
        Grid_GetDoubleColumns(AGrid, DoubleColumnList);

        sFormat:= 'Standard';

        for iDoubleColumnItem:= 0 to DoubleColumnList.Count-1 do
        begin
          DoubleColumnItem:= DoubleColumnList[iDoubleColumnItem];

          sRef_Start:= RefToCell(DoubleColumnItem.iCol+1, DoubleColumnItem.iRowStart+1);
          sRef_End := RefToCell(DoubleColumnItem.iCol+1, DoubleColumnItem.iRowEnd+1);

          bFormatError:= False;
          if sFormat<>'then
          begin
            try
              Sheet.Range[sRef_Start,sRef_End].NumberFormat:= sFormat;
            except
              bFormatError:= True;
            end;

            if bFormatError then
            begin
              bFormatError:= False;
              sFormat:= 'General';
              try
                Sheet.Range[sRef_Start,sRef_End].NumberFormat:= sFormat;
              except
                bFormatError:= True;
              end;

              if bFormatError then
              begin
                sFormat:= '';
              end;
            end;
          end;

          if bFormatError=False then
          begin
            for iRow:= DoubleColumnItem.iRowStart to DoubleColumnItem.iRowEnd do
            begin
              if TryStrToFloat(AGrid.Cells[DoubleColumnItem.iCol,iRow], dFloat) then
              begin
                sRef:= RefToCell(DoubleColumnItem.iCol+1, iRow+1);
                Sheet.Range[sRef,sRef].Value:= dFloat;
              end;
            end;
          end;
        end; { for iDoubleColumnItem:= 0 to DoubleColumnList.Count-1 do }
      finally
        DoubleColumnList.Free;
      end;
DoubleColumnList enthält eine Liste zusammenhängender Double-Bereiche
(spaltenbezogen, Spalte,Startzeile,Endzeile).
Das ganze drumrum (sFormat) hat mit den verschiedenen Excel-Versionen zu tun (u.a. 2007),
tut aber nix zur Sache.

Lange dauert es, wenn eine Spalte Lücken (z.B. leere Zellen) hat.
Dann gibt es hlt viele Bereiche, die formtiert werden müssen.
Gibt es keine Möglichkeit, mehrere Bereiche auf einmal zu formatieren ?

Hat jemand eine Idee ?

Danke


Heiko
Heiko
  Mit Zitat antworten Zitat
 


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 16:50 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