DBGrid e Excel e aktarım !!!
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
DBGrid e Excel e aktarım !!!
Arkadaşlar DBGrid1 deki kayıtları WExcel e nasıl atabilirim?
- ahmethakan
- Üye
- Mesajlar: 30
- Kayıt: 03 Eki 2005 05:26
- Konum: istanbul
Dbgriden Excelle veri transferi
Aşağıdaki kod sorunsuz çalışmaktadır...
ADOOgrNufBil <---- yerine kendi AdoDatset ini yaz
ADOOgrNufBil <---- yerine kendi AdoDatset ini yaz
Kod: Tümünü seç
procedure TForm1.BitBtn6Click(Sender: TObject);
var
aralik:ExcelRange;
i,satir:integer;
Bookmark:TbookmarkStr;
begin
//excel uygulamsı oluştur.
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Workbooks.Add(Null,0);
//hüçreleri doldur
aralik:=ExcelApplication1.ActiveCell;
for i:= 0 to dm.ADOOgrNufBil.Fields.Count -1 do
begin
aralik.Value2:=dm.ADOOgrNufBil.Fields[i].DisplayLabel;
aralik:=aralik.Next;
end;
//alanları satırlara ekle
try
Bookmark:=dm.ADOOgrNufBil.Bookmark;
try
dm.ADOOgrNufBil.First;
satir:=2; //2. satırdan itibaren
while not dm.ADOOgrNufBil.Eof do begin
aralik:=ExcelApplication1.Range['A'+IntToStr(satir),'A'+IntToStr(satir)];
for i:=0 to dm.ADOOgrNufBil.Fields.Count-1 do
begin
aralik.Value2:=dm.ADOOgrNufBil.Fields[i].AsString;
aralik:=aralik.Next;
end;
dm.ADOOgrNufBil.Next;
Inc (satir);
Refresh;
end;
Finally
dm.ADOOgrNufBil.Bookmark:=Bookmark;
end;
finally
begin
// if not VarIsEmpty(Excel)then excel.quit;
end;
end;
end;
Bu şekilde yaptım ama ilk satırda hata verdi?
Kod: Tümünü seç
[Error] excel.pas(67): Undeclared identifier: 'ExcelRange'
[Error] excel.pas(72): Undeclared identifier: 'ExcelApplication1'
[Error] excel.pas(72): Missing operator or semicolon
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
var
aralik:ExcelRange;
i,satir:integer;
Bookmark:TbookmarkStr;
begin
//excel uygulamsı oluştur.
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Workbooks.Add(Null,0);
//hüçreleri doldur
aralik:=ExcelApplication1.ActiveCell;
for i:= 0 to dm.Query1.Fields.Count -1 do
begin
aralik.Value2:=dm.Query1.Fields[i].DisplayLabel;
aralik:=aralik.Next;
end;
//alanları satırlara ekle
try
Bookmark:=dm.Querey1.Bookmark;
try
dm.ADOOgrNufBil.First;
satir:=2; //2. satırdan itibaren
while not dm.Query1.Eof do begin
aralik:=ExcelApplication1.Range['A'+IntToStr(satir),'A'+IntToStr(satir)];
for i:=0 to dm.Query1.Fields.Count-1 do
begin
aralik.Value2:=dm.Query1.Fields[i].AsString;
aralik:=aralik.Next;
end;
dm.Query1.Next;
Inc (satir);
Refresh;
end;
Finally
dm.Query1.Bookmark:=Bookmark;
end;
finally
begin
// if not VarIsEmpty(Excel)then excel.quit;
end;
end;
end;
- ahmethakan
- Üye
- Mesajlar: 30
- Kayıt: 03 Eki 2005 05:26
- Konum: istanbul
procedure TForm1.Button2Click(Sender: TObject);
var
aralik:ExcelRange; // bu satırdan geçmiyor.
i,satir:integer;
Bookmark:TbookmarkStr;
begin
burda hata veriyor
[Error] excel.pas(69): Undeclared identifier: 'ExcelRange'
[Error] excel.pas(77): Undeclared identifier: 'aralik'
[Error] excel.pas(78): Undeclared identifier: 'dm'
var
aralik:ExcelRange; // bu satırdan geçmiyor.
i,satir:integer;
Bookmark:TbookmarkStr;
begin
burda hata veriyor
[Error] excel.pas(69): Undeclared identifier: 'ExcelRange'
[Error] excel.pas(77): Undeclared identifier: 'aralik'
[Error] excel.pas(78): Undeclared identifier: 'dm'
- ahmethakan
- Üye
- Mesajlar: 30
- Kayıt: 03 Eki 2005 05:26
- Konum: istanbul
Uses 'e Excel2000 i ekle
aşağıdaki kodu şimdi test ettim sorunyok...
bir de demin senin gönderdiğin kodun
21. ci satırı hatalı
aşağıdaki kodu şimdi test ettim sorunyok...
bir de demin senin gönderdiğin kodun
21. ci satırı hatalı
Kod: Tümünü seç
var
aralik:ExcelRange;
i,satir:integer;
Bookmark:TbookmarkStr;
begin
//excel uygulamsı oluştur.
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Workbooks.Add(Null,0);
//hüçreleri doldur
aralik:=ExcelApplication1.ActiveCell;
for i:= 0 to dm.ADODataSet1.Fields.Count -1 do
begin
aralik.Value2:=dm.ADODataSet1.Fields[i].DisplayLabel;
aralik:=aralik.Next;
end;
//alanları satırlara ekle
try
Bookmark:=dm.ADODataSet1.Bookmark;
try
dm.ADODataSet13.First;
satir:=2; //2. satırdan itibaren
while not dm.ADODataSet1.Eof do begin
aralik:=ExcelApplication1.Range['A'+IntToStr(satir),'A'+IntToStr(satir)];
for i:=0 to dm.ADODataSet1.Fields.Count-1 do
begin
aralik.Value2:=dm.ADODataSet1.Fields[i].AsString;
aralik:=aralik.Next;
end;
dm.ADODataSet1.Next;
Inc (satir);
Refresh;
end;
Finally
dm.ADODataSet1.Bookmark:=Bookmark;
end;
finally
begin
// if not VarIsEmpty(Excel)then excel.quit;
end;
end;
end;
Dediklerinizi yaptım burayı geçmiyor?
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
aralik:ExcelRange; // burda takılıyor
- ahmethakan
- Üye
- Mesajlar: 30
- Kayıt: 03 Eki 2005 05:26
- Konum: istanbul
aşağıdaki uses lere bi bak hangisi eksikse yaz dene
Kod: Tümünü seç
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, XPMan, Menus, OleServer, ExcelXP, ExtCtrls, Grids, DBGrids,
StdCtrls, Buttons, DBCtrls, ADODB;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Menus, OleServer, ExtCtrls, Grids, DBGrids,
StdCtrls, Buttons, DBCtrls, ADODB, Excel2000, DBTables;
ekledim yine aynı yerde takılıyor acaba delphi6 olduğu için mi, ben bunu delphi5 de kullanacam şu an delphi6 da deniyorum.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Menus, OleServer, ExtCtrls, Grids, DBGrids,
StdCtrls, Buttons, DBCtrls, ADODB, Excel2000, DBTables;
ekledim yine aynı yerde takılıyor acaba delphi6 olduğu için mi, ben bunu delphi5 de kullanacam şu an delphi6 da deniyorum.
- ahmethakan
- Üye
- Mesajlar: 30
- Kayıt: 03 Eki 2005 05:26
- Konum: istanbul
vermiş olduğum örnekler Delphi 7 de office sürümüde officexp
uses OleServer, ExcelXP, DB, ADODB
bunları dene
senin için dene program yaptım sorun suz çalıyor tüm kodu yolluyorum
birincele Umarım faydası olur
----------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, OleServer, ExcelXP, DB, ADODB;
type
TForm1 = class(TForm)
ADODataSet1: TADODataSet;
ADODataSet1AId: TAutoIncField;
ADODataSet1BILGI: TIntegerField;
ADODataSet1KURSMERKEZI: TWideStringField;
ADODataSet1USTAOGRETICI: TWideStringField;
ADODataSet1BRANS: TWideStringField;
ADODataSet1GUNLER: TWideStringField;
ADODataSet1DERSGUNLERI: TWideStringField;
ADODataSet1HIOK: TWideStringField;
ADODataSet1HIKK: TWideStringField;
ADODataSet1HSOK: TWideStringField;
ADODataSet1HSKK: TWideStringField;
ADODataSet1AKSOK: TWideStringField;
ADODataSet1AKSKK: TWideStringField;
ADODataSet1TONKAYIT: TWideStringField;
ADODataSet1TKESINKAYIT: TWideStringField;
ADODataSet1HSAKSOK: TWideStringField;
ADODataSet1HSAKSKK: TWideStringField;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ExcelApplication1: TExcelApplication;
Button1: TButton;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
aralik:ExcelRange;
i,satir:integer;
Bookmark:TbookmarkStr;
begin
//excel uygulamsı oluştur.
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Workbooks.Add(Null,0);
//hüçreleri doldur
aralik:=ExcelApplication1.ActiveCell;
for i:= 0 to ADODataSet1.Fields.Count -1 do
begin
aralik.Value2:=ADODataSet1.Fields.DisplayLabel;
aralik:=aralik.Next;
end;
//alanları satırlara ekle
try
Bookmark:=ADODataSet1.Bookmark;
try
ADODataSet1.First;
satir:=2; //2. satırdan itibaren
while not ADODataSet1.Eof do begin
aralik:=ExcelApplication1.Range['A'+IntToStr(satir),'A'+IntToStr(satir)];
for i:=0 to ADODataSet1.Fields.Count-1 do
begin
aralik.Value2:=ADODataSet1.Fields.AsString;
aralik:=aralik.Next;
end;
ADODataSet1.Next;
Inc (satir);
Refresh;
end;
Finally
ADODataSet1.Bookmark:=Bookmark;
end;
finally
begin
// if not VarIsEmpty(Excel)then excel.quit;
end;
end;
end;
end.
Benim böyle bir uygulamam vardı fakat excel açmıyordu onun için arayış içine girdim birde başlık ekletmeliyim yardım edermisiniz?
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
v:=createoleobject('excel.application'); //exceli yarat
v.workbooks.open('c:\a\Kitap1.xls'); //yeni calisma kitabini ekle
sayfa:=v.workbooks[1].worksheets[1]; // 2. worksheets için de aynı
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from SISTEMFOR');
Query1.Open;
Query1.First;
for i := 1 to query1.RecordCount do
begin
sayfa.cells[(i+2),1] := query1.Fields[1].AsFloat;
sayfa.cells[(i+2),2] := query1.Fields[2].AsString;
sayfa.cells[(i+2),3] := query1.Fields[3].AsString;
sayfa.cells[(i+2),4] := query1.Fields[4].AsString;
sayfa.cells[(i+2),5] := query1.Fields[5].AsString;
// sayfa.cells[(i+8),4] := table1.fieldsbyname(toplam).asfloat; şeklindede olabilir.
query1.Next;
end; // for i := 1 to query1.RecordCount do
v.quit;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
aralik:ExcelRange;
i,satir:integer;
Bookmark:TbookmarkStr;
begin
//excel uygulamsı oluştur.
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Workbooks.Add(Null,0);
//hüçreleri doldur
aralik:=ExcelApplication1.ActiveCell;
for i:= 0 to dm.Query1.Fields.Count -1 do
begin
aralik.Value2:=dm.Query1.Fields[i].DisplayLabel;
aralik:=aralik.Next;
end;
//alanları satırlara ekle
try
Bookmark:=dm.Querey1.Bookmark;
try
dm.Query1.First;
satir:=2; //2. satırdan itibaren
while not dm.Query1.Eof do begin
aralik:=ExcelApplication1.Range['A'+IntToStr(satir),'A'+IntToStr(satir)];
for i:=0 to dm.Query1.Fields.Count-1 do
begin
aralik.Value2:=dm.Query1.Fields[i].AsString;
aralik:=aralik.Next;
end;
dm.Query1.Next;
Inc (satir);
Refresh;
end;
Finally
dm.Query1.Bookmark:=Bookmark;
end;
finally
begin
// if not VarIsEmpty(Excel)then excel.quit;
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
v,sayfa:variant;{v excel prg, sayfa calisma sayfasi}
say,i:integer;
begin
query1.open;
say:=query1.recordcount;//query kayit sayisi
v:=createoleobject('excel.application');//exceli yarat
v.workbooks.add;//yeni calisma kitabini ekle
sayfa:=v.workbooks[1].worksheets[1];{Birinci calisma sayfasini sayfa degiskenine ata}
query1.first;
for i:=1 to say do
begin
sayfa.cells[i,1]:=query1ad.text;
sayfa.cells[i,2]:=query1soyad.text;
query1.next;
end;
v.visible:=true;//Exceli acip verileri goster
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************