Arşiv Anasayfa Delphi Makaleleri
Sayfalar: 1
Excel'i Veritabanı Olarak Kullanma Gönderen: dynamo Tarih: 07 April 2007 12:58:57
Excel dosyalarını ADO komponentlerini kullarak veritabanıynış gibi kullanabiliriz.Her bir excel dosyası bir veritabanı,bu dosyadaki her bir sayfa ise Tablo dur.

ADOConnection ile excel'e bağlantı:

:
   //xls Veritabanına bağlan
   str:=Edit1.Text; //ecxel dosyası yolu
   AdoConnection1.Connected:=False;
   AdoConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;' +
                  'Data Source=' + str + ';' +
                  'Extended Properties=Excel 8.0;';
   try
      AdoConnection1.Open;
   except
      ShowMessage('Hata....Excele bağlanamadı...');
      raise;
   end;

perdata.xls dosyası içinde Personel ve Grup adlı 2 sayfamız var.Excel sayfalar "Sayfa1","Sayfa2" şeklinde varsayılan isimleri ile gelir.biz "Personel" ve "Grup" olarak değiştirdik.

ADOQuery den sayfaya bağlantı :

:
   select * from [PERSONEL$]

projenin kodu:

:
unit Unit1;

interface



uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, Buttons,
  ComCtrls, FileCtrl, StrUtils;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOQuery1: TADOQuery;
    DBGrid2: TDBGrid;
    SpeedButton1: TSpeedButton;
    Edit1: TEdit;
    OpenDialog1: TOpenDialog;
    Label1: TLabel;
    Button1: TButton;
    ADOQuery2: TADOQuery;
    DataSource2: TDataSource;
    Label2: TLabel;
    Label3: TLabel;
    BitBtn1: TBitBtn;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    procedure SpeedButton1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private


  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}




{ TForm1 }

procedure TForm1.FormShow(Sender: TObject);
begin
   OpenDialog1.Filter:='*.xls|*.xls';
end;


procedure TForm1.SpeedButton1Click(Sender: TObject);
begin

   opendialog1.InitialDir:= ExtractFilePath(application.ExeName);
  if opendialog1.Execute then
   edit1.Text:=opendialog1.FileName;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   str:string;
begin



   //xls Veritabanına bağlan
   str:=Edit1.Text;
   AdoConnection1.Connected:=False;
   AdoConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;' +
                  'Data Source=' + str + ';' +
                  'Extended Properties=Excel 8.0;';
   try
      AdoConnection1.Open;
   except
      ShowMessage('Hata....Excele bağlanamadı...');
      raise;
   end;

   //personel tabloyu seç
   AdoQuery1.Close;
   AdoQuery1.SQL.Clear;
   AdoQuery1.SQL.Add('select * from [PERSONEL$]');
   AdoQuery1.Open;

   //grup tabloyu seç
   AdoQuery2.Close;
   AdoQuery2.SQL.Clear;
   AdoQuery2.SQL.Add('select * from [GRUP$]');
   AdoQuery2.Open;

   //-----------------------------------------------------------------------
   DBGrid1.Columns.Clear;

   DBGrid1.Columns.Add;
   DBGrid1.Columns[0].FieldName:='KOD';
   DBGrid1.Columns[0].Title.Caption:='KOD';
   DBGrid1.Columns[0].Width:=100;
   DBGrid1.Columns[0].Title.Font.Color:=clRed;

   DBGrid1.Columns.Add;
   DBGrid1.Columns[1].FieldName:='AD';
   DBGrid1.Columns[1].Title.Caption:='AD';
   DBGrid1.Columns[1].Width:=100;
   DBGrid1.Columns[1].Color:=clInfoBk;

   DBGrid1.Columns.Add;
   DBGrid1.Columns[2].FieldName:='GRUP';
   DBGrid1.Columns[2].Title.Caption:='GRUP';
   DBGrid1.Columns[2].Width:=100;


   DBGrid1.Columns.Add;
   DBGrid1.Columns[3].FieldName:='ADRES';
   DBGrid1.Columns[3].Title.Caption:='ADRES';
   DBGrid1.Columns[3].Width:=100;

   DBGrid1.Columns.Add;
   DBGrid1.Columns[4].FieldName:='TEL';
   DBGrid1.Columns[4].Title.Caption:='TEL';
   DBGrid1.Columns[4].Width:=100;

   //----------------------------------------------------------------------
   DBGrid2.Columns.Clear;

   DBGrid2.Columns.Add;
   DBGrid2.Columns[0].FieldName:='KOD';
   DBGrid2.Columns[0].Title.Caption:='KOD';
   DBGrid2.Columns[0].Width:=100;

   DBGrid2.Columns.Add;
   DBGrid2.Columns[1].FieldName:='GRUPADI';
   DBGrid2.Columns[1].Title.Caption:='GRUPADI';
   DBGrid2.Columns[1].Width:=100;

   
end;

//kaydet
procedure TForm1.BitBtn1Click(Sender: TObject);
begin

      ADOQuery1.Insert;
      ADOQuery1.FieldByName('KOD').AsString:=Edit2.Text;
      ADOQuery1.FieldByName('AD').AsString:=Edit3.Text;
      ADOQuery1.Post;
   

end;


end.





.
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: FetihlerFatihi Tarih: 07 April 2007 15:04:18
Teşekkürler. Resmi sunucuya attım
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: olsunartik Tarih: 09 April 2007 11:22:23
Elinize gonlunuze saglik.
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: kocaturk Tarih: 10 April 2007 04:04:03
paylaşım iyidir paylaşın ayrıca bu paylaşım için teşekkürler
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: babahayati Tarih: 10 April 2007 09:15:37
dynamo teşekkürler, ellerin dert görmesin
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: dynamo Tarih: 10 April 2007 12:00:57
teşekkürler.bizde zamanında forum'lardan çok şey öğrendik.
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: vectorman Tarih: 11 April 2007 11:36:08
asp.net 'de de kullanabilir miyiz bunu. adoyu ? ve exceli
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: sewda Tarih: 11 April 2007 23:03:38
güzel bir paylaşım,teşekkürler;)
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: emrecilgin Tarih: 21 May 2007 10:33:42
GÜZEL  BİR EXCEL ÖRNEĞİ TEŞEKKÜRLER Wink
Ynt: Excel'i Veritabanı Olarak Kullanma Gönderen: Selmante Tarih: 13 March 2008 13:38:36
çok işime yaradı.
 çok teşekkürler... Smile