// Bei der
Datenübergabe an MS-Excel muss man beachten, dass Formate
// in deutscher Form
(z.B.
'[Blau]0,0'), Formeln aber in englischer Form
// übergeben werden müssen
(z.B.
'AVERAGE'
anstelle von
'MITTELWERT').
// Getestet mit D4 unter XP
var xcl, wkb, oleArray: OleVariant;
procedure TForm1.Button3Click(Sender: TObject);
begin
xcl := createOleObject('Excel.Application');
wkb := xcl.workbooks.add;
OleArray := VarArrayCreate([0, 4], varVariant);
OleArray[0] := -1234.5; // wird rot, weil < 0
OleArray[1] := 0; // wird blau, weil = 0,0
OleArray[2] := 'Versuch'; // wird grün
OleArray[3] := 4.7E-2; // nicht blau, weil > 0 (obwohl 0,0 angezeigt wird)
OleArray[4] := True; // wird "WAHR"
xcl.Range['B3', 'F3'].Value := OleArray;
xcl.Range['D3'].Font.Color := ColorToRGB(clGreen); // 'Versuch'
xcl.Range['D3'].Font.Italic := True;
xcl.Range['G3'].Value := 987.6;
xcl.Range['H3'].Value := 'Summe';
xcl.Range['H4'].Formula := '=SUM(B3:G3)';
xcl.Range['H5'].Value := 'Mittelwert';
xcl.Range['H6'].Formula := '=AVERAGE(B3:G3)';
xcl.Range['H7'].Value := 'Höchstwert';
xcl.Range['H8'].Formula := '=MAX(B3:G3)';
xcl.Range['H9'].Value := 'niedrigster Wert';
xcl.Range['H10'].Formula := '=MIN(B3:G3)';
xcl.Range['B3:H10'].NumberFormat := '#.##0,0;[Rot]-#.##0,0;[Blau]0,0';
xcl.Range['B3:H10'].HorizontalAlignment := -4152; // rechtsbündig
xcl.Range['B3:H10'].Columns.AutoFit; // Spaltenbreite optimieren
xcl.Range['H6'].Select;
xcl.Selection.NumberFormat := '#.##0,00000;[Rot]-#.##0,00000';
xcl.Range['A1'].Select;
wkb.SaveAs('C:\Test.xls');
xcl.visible := true;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if not VarIsEmpty(xcl) then xcl.quit;
end;
|