internetten bulduğum aşagıdaki kod ile xls ve xlsx dosyalarını stringGrid e aktarıyorum başka arkadaşlara faydası olur umarım birde sorum var resimde görülen
iki komut parametresi için tanımsız hatası veriyor ama derliyor ve çalışıyor.
Bunun nedeni nedir öğrenip kütüphanemize ekleyelim.
28/07/2020 18:33 excel den gelen veriye göre sutün genişliklerini ayarlıyor.
iki komut parametresi için tanımsız hatası veriyor ama derliyor ve çalışıyor.
Bunun nedeni nedir öğrenip kütüphanemize ekleyelim.
28/07/2020 18:33 excel den gelen veriye göre sutün genişliklerini ayarlıyor.
procedure Tana_frm.AutoSizeGrid(Grid: TStringGrid);
const
ColWidthMin = 10;
var
C, R, W, ColWidthMax: integer;
begin
for C := 0 to Grid.ColCount - 1 do begin
ColWidthMax := ColWidthMin;
for R := 0 to (Grid.RowCount - 1) do begin
W := Grid.Canvas.TextWidth(Grid.Cells[C, R]);
if W > ColWidthMax then
ColWidthMax := W;
end;
Grid.ColWidths[C] := ColWidthMax + 5;
end;
end;
function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
// Excel oluştur
XLApp := CreateOleObject('Excel.Application');
try
// oluşturulan excel gizle
XLApp.Visible := False;
// parametre olarak verilen excel çalışma kitabını aç
XLApp.Workbooks.Open(AXLSFile);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
// Çalışma Sayfası'nın satır sayısı ve sütun sayısını, boş olmayan son hücresini etkinleştiririz
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
// Son satırın değerini al
x := XLApp.ActiveCell.Row;
// Son sütunun değerini al
y := XLApp.ActiveCell.Column;
// Stringgrid'in satır ve sütun boyutlarını ayarlayın.
AGrid.RowCount := x;
AGrid.ColCount := y;
// Çalışma Sayfası ile ilişkili Değişkeni Delphi Değişkeni'ne atayın
RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
// TStringGrid doldurma döngüsünü tanımlama
k := 1;
repeat
for r := 1 to y do
AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
Inc(k, 1);
AGrid.RowCount := k + 1;
until k > x;
// Delphi Varyant Matrisinin atamasını kaldırın
RangeMatrix := Unassigned;
finally
// Excel den çık
if not VarIsEmpty(XLApp) then
begin
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result := True;
end;
end;
end;
// Kullanımı
procedure TAna_Frm.Btn_yukleClick(Sender: TObject);
begin
if not FileExists(edt_excel.text) then begin btn_yukle.Enabled:=false;exit;end;
if Xls_To_StringGrid(StringGrid1, edt_excel.Text) then
ShowMessage( edt_excel.Text + ' Excel Aktarım Tamamlandı!');
AutoSizeGrid(StringGrid1);
end;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)

