Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringGrid -> Excel: Kommzahlen als Zahlen einfügen (https://www.delphipraxis.net/145445-stringgrid-excel-kommzahlen-als-zahlen-einfuegen.html)

cosypanther 1. Jan 2010 17:56


StringGrid -> Excel: Kommzahlen als Zahlen einfügen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Mit dem unten stehenden Code, den ich im Internet gefunden habe, werden die Daten aus meinem StringGrid 1:1
in Excel eingefügt und dargestellt. Diese Funktion nutze ich, um aus den errechneten Werten ein Diagramm zeichnen zu lassen.

Ich habe jedoch ein kleine Problem, sobald Kommazahlen im StringGrid sind.
Diese werden in Excel nämlich als Text eingefügt, was zu Problemen beim Zeichnen von Graphen führt.

Delphi-Quellcode:
 {create variant array where we'll copy our data}
    arrData := VarArrayCreate([1, StringGrid1.RowCount, 1, StringGrid1.ColCount], varVariant);

    {fill array}
    for i := 1 to StringGrid1.RowCount do
    for j := 1 to StringGrid1.ColCount do
      arrData[i, j] := StringGrid1.Cells[j-1, i-1];

    {initialize an instance of Excel}
    xls := CreateOLEObject('Excel.Application');

    {create workbook}
    wb := xls.Workbooks.Add;

    {retrieve a range where data must be placed}
    Range := wb.WorkSheets[1].Range[wb.WorkSheets[1].Cells[1,1],
    wb.WorkSheets[1].Cells[StringGrid1.RowCount, StringGrid1.ColCount]];

    {copy data from allocated variant array}
    Range.Value := arrData;

    {show Excel with our data}
    xls.Visible := True;
Quelle: http://www.scalabium.com/faq/dct0144.htm

Habt ihr eine Idee, wie sich das lösen lässt?

Viele Grüsse!
cosypanther

Chemiker 2. Jan 2010 15:06

Re: StringGrid -> Excel: Kommzahlen als Zahlen einfügen
 
Hallo cosypanther,

im StringGrid liegen die Daten als String vor. In Deinem Fall muss der String erst in eine Zahl konvertiert werden.
Zum Bleistift:


Delphi-Quellcode:
var
  Zahl: Extended;
Delphi-Quellcode:
for i := 1 to StringGrid1.RowCount do
for j := 1 to StringGrid1.ColCount do
begin
  if TryStrToFloat(StringGrid1.Cells[j-1, i-1], Zahl) then
  begin
    arrData[i, j]:= Zahl
  end
   else
  begin
    arrData[i, j] := StringGrid1.Cells[j-1, i-1];
  end;
end;
Bis bald Chemiker

cosypanther 2. Jan 2010 16:20

Re: StringGrid -> Excel: Kommzahlen als Zahlen einfügen
 
Und wieder was dazugelernt! :) Läuft wunderbar!

Viele Grüße,
cosypanther


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