Einzelnen Beitrag anzeigen

Micha

Registriert seit: 21. Jul 2003
Ort: Neumarkt
263 Beiträge
 
#1

Excel OLE Zellen formatieren

  Alt 24. Nov 2005, 19:24
Hallo zusammen,

ich habe ein StringGrid, dessen Inhalt ich gerne nach Excel übergeben möchte. Das klappt auch einwandfrei.

Vereinfachte Darstellung:
Das StringGrid enthält 3 Zahlen, die ich mir erst in Excel mit der Summen-Formel zusammenzählen lassen möchte.
Übergebe ich nund die Zahlen nach Excel, so werden mir diese nicht korrekt dargestellt.

Excel setzt mir an die Ecke der Zelle den Hinweis auf den Formelüberwachungsassitenten. Auch sind weitere Kontext-Menü-Einträge vorhanden, mit denen ich das Ganze in eine Zahl umwandeln könnte ("In eine Zahl umwandeln").
Jetzt möchte ich aber nicht jede Zelle anklicken müssen, um diese als Zahl zu formatieren.

Hat jemand eine Idee? Hier im Forum habe ich schon gesucht. Ein vergleichbares Thema habe ich nicht gefunden.

Hier ein Ausschnitt meines bisherigen Codes:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j : integer;
 xls, wb, Range, Format: OLEVariant;
 arrData: Variant;
Sheet: OLEVariant;
 Excel: _Application;
begin
 {create variant array where we'll copy our data}
 arrData := VarArrayCreate([1, ws.RowCount, 1,
ws.ColCount], varVariant);

 {fill array}
 for i := 1 to ws.RowCount do
   for j := 1 to ws.ColCount do
     arrData[i, j] := ws.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[ws.RowCount, ws.ColCount]];

// nachfolgende in Kommentar gesetzte varianten funktionieren nicht

// Format := 'General';
// Sheet.Range['G3', 'G3'].EntireColumn.NumberFormat := Format;
//Format := '$#,##0.00_);[Red]($#,##0.00)';
//Sheet.range['G3', 'G3'].EntireColumn.NumberFormat := Format;
 xls.Visible := True;

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

 {show Excel with our data}
// xls.Visible := True;
end;
  Mit Zitat antworten Zitat