Delphi Can

Orjinalini görmek için tıklayınız: Excel import yapma (Güncelleme)
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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.


  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;
Merhaba,
Delphi 10.4 öncesinde bu tip error inside azizliği vardı. Yeni sürümde Language Server Protocol (LSP) ile bu sorun aşıldı.
Kodda bir sorun yok.

[attachment=1247]

[attachment=1248]
(28-07-2020, Saat: 17:30)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
Delphi 10.4 öncesinde bu tip error inside azizliği vardı. Yeni sürümde Language Server Protocol (LSP) ile bu sorun açıldı.
Kodda bir sorun yok.

Teşekkür ederim Allah razı olsun.
Teşekkürler.