![]() |
Excel OLE Zellen formatieren
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; |
Re: Excel OLE Zellen formatieren
Also, es sollte etwa so gehen:
Delphi-Quellcode:
Cu, Frank
wb.WorkSheets[1].Cells[x, y].Select;
wb.WorkSheets[1].Selection.NumberFormat := '#.##0,00'; |
Re: Excel OLE Zellen formatieren
hört sich auf den ersten Blick schon gut an, ja!
Es kommt aber die Meldung "Selection" wird vom Automatisierungsprozess nicht unterstützt :-( |
Re: Excel OLE Zellen formatieren
Zitat:
Code:
so könnte es auch klappen
Excelsheet.Cells.Range_['B1','B1'].NumberFormat:='#.##0,00';
Code:
Excelsheet.Cells.Item[Row,Col].NumberFormat:='#.##0,00';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz