Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Excel import yapma (Güncelleme)
#1
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;


Ek Dosyalar Resimler
   
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
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.

   

   
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(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.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQLite Veritabanı Güncelleme Frrst 5 201 26-10-2020, Saat: 18:53
Son Yorum: Frrst
  StringList Güncelleme MEDCEZİR 1 121 26-10-2020, Saat: 09:24
Son Yorum: Fesih ARSLAN
  PDF-WORD-EXCEL Binary olarak kaydetme ve geri okuma hk MugenPower 7 1.051 16-10-2020, Saat: 14:54
Son Yorum: m_ekici
  windows bluetooth disable yapma dervis 3 373 08-10-2020, Saat: 13:54
Son Yorum: Syntax
  Pdf dosyayı Excel'e aktarmak hbulus 6 414 16-09-2020, Saat: 21:28
Son Yorum: resatarikan



Konuyu Okuyanlar: 1 Ziyaretçi