Ahhh, verstehe,
wir reden aber nur zum Teil aneinander vorbei:
Bevor du die Farbe aus Objects (beim Export) lesen kannst, muss der Wert ja erst einmal dort abgelegt werden. Das muss im OnDrawCell() geschehen. Da sehe ich in deinem Code nix, wo das passiert: Überall dort, wo du den Hintergrund färbst, musst du zusätzlich die verwendete Farbe ins Object speichern, also z.B.
Delphi-Quellcode:
...then begin
Canvas.Brush.Color := clLime;
Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
Canvas.FrameRect(Rect);
TStringGrid(Sender).Objects[aCol,aRow]:=Integer(Canvas.Brush.Color) // <<< !!!!!
end;
// edit: Ich glaub, das "TStringGrid(Sender)." ist überflüssig?!