![]() |
Problem mit einer function( excel in stringgrid)
Hallo!
Ich ein grosses problem mit folgender fuction: von ![]()
Delphi-Quellcode:
mein problen ist dass ich nich weiss was ich für excel einstezten soll.
Function ExcelCopyToStringGrid(
Excel : Variant; ExcelFirstRow : Integer; ExcelFirstCol : Integer; ExcelLastRow : Integer; ExcelLastCol : Integer; StringGrid : TStringGrid; StringGridFirstRow : Integer; StringGridFirstCol : Integer; SizeStringGridToFit : Boolean; {Make the StringGrid the same size as the input range} ClearStringGridFirst : Boolean {cells outside input range in StringGrid are cleared} ): Boolean; Var C,R : Integer; Begin Result := False; If ExcelLastCol < ExcelFirstCol Then Exit; If ExcelLastRow < ExcelFirstRow Then Exit; If (ExcelFirstRow < 1) Or (ExcelFirstRow > 255) Then Exit; If (ExcelFirstCol < 1) Or (ExcelFirstCol > 30000) Then Exit; If (ExcelLastRow < 1) Or (ExcelLastRow > 255) Then Exit; If (ExcelLastCol < 1) Or (ExcelLastCol > 30000) Then Exit; If StringGrid = nil Then Exit; If SizeStringGridToFit Then Begin StringGrid.ColCount := ExcelLastCol - ExcelFirstCol + StringGridFirstCol + 1; StringGrid.RowCount := ExcelLastRow - ExcelFirstRow + StringGridFirstRow + 1; End; If ClearStringGridFirst Then Begin C := StringGrid.ColCount; R := StringGrid.RowCount; StringGrid.ColCount := 1; StringGrid.RowCount := 1; StringGrid.Cells[0,0] := ''; StringGrid.ColCount := C; StringGrid.RowCount := R; End; Result := True; For R := ExcelFirstRow To ExcelLastRow Do Begin For C := ExcelFirstCol To ExcelLastCol Do Begin Try StringGrid.Cells[ C - ExcelFirstCol + StringGridFirstCol, R - ExcelFirstRow + StringGridFirstRow] := Excel.Cells[R, C]; Except Result := False; End; End; End; End; Wahrscheinelich :" excel : excelworksheet1.?" weiter weiss ich nicht :wall: |
Re: Problem mit einer function( excel in stringgrid)
Hallo,
ich habe mich schon mal mehrere Wochen mit Excelautomation herumgeschlagen, das macht nicht wirklich Spaß, weil vor allem alles soooo wunderbar dokumentiert ist... :x Auf jeden Fall, die Lösung Deines Problems:
Delphi-Quellcode:
:arrow: Vergiss comobj in der uses-clausel nicht!
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, comobj; type TForm1 = class(TForm) Button1: TButton; StringGrid1: TStringGrid; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} Function ExcelCopyToStringGrid( Excel : Variant; ExcelFirstRow : Integer; ExcelFirstCol : Integer; ExcelLastRow : Integer; ExcelLastCol : Integer; StringGrid : TStringGrid; StringGridFirstRow : Integer; StringGridFirstCol : Integer; SizeStringGridToFit : Boolean; {Make the StringGrid the same size as the input range} ClearStringGridFirst : Boolean {cells outside input range in StringGrid are cleared} ): Boolean; Var C,R : Integer; Begin Result := False; If ExcelLastCol < ExcelFirstCol Then Exit; If ExcelLastRow < ExcelFirstRow Then Exit; If (ExcelFirstRow < 1) Or (ExcelFirstRow > 255) Then Exit; If (ExcelFirstCol < 1) Or (ExcelFirstCol > 30000) Then Exit; If (ExcelLastRow < 1) Or (ExcelLastRow > 255) Then Exit; If (ExcelLastCol < 1) Or (ExcelLastCol > 30000) Then Exit; If StringGrid = nil Then Exit; If SizeStringGridToFit Then Begin StringGrid.ColCount := ExcelLastCol - ExcelFirstCol + StringGridFirstCol + 1; StringGrid.RowCount := ExcelLastRow - ExcelFirstRow + StringGridFirstRow + 1; End; If ClearStringGridFirst Then Begin C := StringGrid.ColCount; R := StringGrid.RowCount; StringGrid.ColCount := 1; StringGrid.RowCount := 1; StringGrid.Cells[0,0] := ''; StringGrid.ColCount := C; StringGrid.RowCount := R; End; Result := True; For R := ExcelFirstRow To ExcelLastRow Do Begin For C := ExcelFirstCol To ExcelLastCol Do Begin Try StringGrid.Cells[ C - ExcelFirstCol + StringGridFirstCol, R - ExcelFirstRow + StringGridFirstRow] := Excel.Cells[R, C]; Except Result := False; End; End; End; End; procedure TForm1.Button1Click(Sender: TObject); var excel: Variant; begin excel := createoleobject('excel.application'); excel.workbooks.open ('c:\mappe1.xls'); ExcelCopyToStringGrid(excel, 1, 1, 14, 7, StringGrid1, 0, 0, true, true); excel.application.quit; end; end. Gruß und viel Spaß damit Poolspieler |
Re: Problem mit einer function( excel in stringgrid)
Habe ich ein deja vú? :gruebel: Das haben wir doch erst vor kurzem alles durchgekaut mit dir - oder?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 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-2025 by Thomas Breitkreuz