Merhaba arkdaşlar ben ben delphi7 kullanıyorum, paradox bir veri tabanındaki bilgileri, var olan bir excel dosyasına istediğim alanlara kayıt etmek istiyorum..
örnegin c:\excel.xls adlı bir dosyam var bunu delphide
procedure TForm1.Button1Click(Sender: TObject);
var
excel:Variant;
begin
excel:=CreateOleObject('excel.Application');//excel adında excel uygulaması oluştur.
excel.Visible:=True;
excel.Workbooks.Open['C:\excel.xls',,ReadOnly:=False];
end;
kodu ile açıyorum ama bilgileri aktarmak istediğimde
access violation hatası veriyor
yeni bir excel dosyası açıp bilgileri aktardığımda sorun yok , ama
procedure TForm1.Button1Click(Sender: TObject);
var
excelPrg,sayfa:variant;
i,d:integer;
r:variant;
begin
excelPrg:=createoleobject('excel.application');//exceli yarat
excelPrg.workbooks.add;
sayfa:=excelPrg.workbooks[1].worksheets[1];{Birinci calisma sayfasini sayfa degiskenine ata}
r:=excelPrg.activeworkbook.worksheets[1].cells[1]; // Burası Çok önemli
i:=0;
d:=0;
while Not Table1.eof do
begin
i:=i+1;
d:=d+1;
r.cells[1+d,i]:=Table1.FieldByName('NAME').AsString;
r.cells[1+d,i+1]:=Table1.FieldByName('SIZE').AsString;
Table1.Next;
i:=0;
end;
excelPrg.visible:=true;//Exceli acip verileri
end;
merhabalar, yardımlarınız için teşekkürler, yazdığınız kodlar işimi gördü yanlız naile hocam 'ın gönderdiği kodun son satırındaki, IExcel.Disconnect; kodunu yazdıgımda programı kapatırken bellek okunamadı mesajı veriyor..
ben programımda varalon bir excel dosyasındaki verilerin üstüne devamlı yeni veriler aktarmak istiyorum...
IExcel.Disconnect; kodunu sildiğimde ise şöyle bir sorun var program ilk seferinde doğru aktarıyor..programı kapatmadan database de bir kayıt değiştirim tekrar aktarmak istediğimde , excel programı açılmıyor, aslında arka planda açılıyor ama visible 'ı false gibi bir şey oluyor ve ve görev yöneticisinde çalışan işlemlerde 2-3 ve daha fazla excel.exe programı gözüküyor.. disconnect ve visible işlemlerini nasıl bir şekilde kullanırsam sorun çözülür
Evet o disconnect olmazsa 2.sefer excel dosyası açmak istediğinde visible false oluyor. Ama ben de hiç hata vermiyor
Benim kodu aynen mi yazdın? Kodunu yazarsan belki görebilirim hata nedenini.
procedure TForm1.Button1Click(Sender: TObject);
var
index:OleVariant;
Dosya:Widestring;
begin
Dosya:= 'C:\deneme.xls';
index := 1;
IExcel.WorkBooks.Open(Dosya,EmptyParam,False,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
///alan verilerini izleyen satırlara ekle
Table1.DisableControls;
try
Bookmark:=Table1.GetBookmark;
try
Table1.First;
///SAtırları seç
Row:=2;
While not Table1.EOF do
begin
// Sutunları seç
IRange:=IExcel.Range ['A'+inttostr(Row),'A'+inttostr(Row)];
For I:=0 to Table1.Fields.Count-1 do
begin
IRange.Value:=Table1.Fields.AsString;
IRange:=IRange.Next;
end;
Table1.Next;
Inc(Row);
end;
Finally
Table1.GotoBookmark(Bookmark);
Table1.FreeBookmark(Bookmark);
end;
finally
Table1.EnableControls;
end;
//Kısmı formatla
IRange:=IExcel.Range['A1','F'+inttostr(Row-1)];
IRange.AutoFormat(1,NULL,NULL,NULL,NULL,NULL,NULL);
uses
... ,ComObj;
var
v,sayfa : variant;{v excel prg, sayfa calisma sayfasi}
ii, adet, sayi, satir : integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
v:=createoleobject('excel.application'); //exceli yarat
v.workbooks.open('c:\iptal_iade_tablosu.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 table_name');
Query1.Open;
Query1.First;
for i := 1 to query1.RecordCount do
begin
sayfa.cells[(i+8),3] := query1.Fields[1].AsInteger;
sayfa.cells[(i+8),4] := query1.Fields[2].Asfloat;
// sayfa.cells[(i+8),4] := table1.fieldsbyname(toplam).asfloat; şeklindede olabilir.
query1.Next;
end; // for i := 1 to query1.RecordCount do
v.quit;
end;
Şeklinde çalışan bir uygulama ile query den istediğim bilgileri excel tablosuna alabiliyorum.
Teşekkürler arkadaşlar, Hatice hanımın kodunu denediğimde de aynı şeyi yapıyor, yani sorunu hala çözemedim, bende aktarma işlemi bittiğinde programı kapatıyorum,sonra yeniden çalıştırıyorum böyle geçmek zorunda kaldım.. sorunu çözebilirsem sizlere iletirim...
Herşey için Teşekkürler
Dosyanın kendisi salt okunur olabilir veya xp kullanıyorsan oturumu açtığın kullanıcıdan dolayı sorun çıkıyor oalbilir ben burda gönderdiğim kodu kendim kullanıyorum varolan bir dosyayı açıp bu kodla içine bilgi yazabiliyorum.