excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mazhargemci
Üye
Mesajlar: 101
Kayıt: 13 Şub 2015 09:32

excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen mazhargemci »

dbgriden excele aşağıdaki kodlar ile aktarıyorum bunda bir sıkıntı yok. excele aktardıktan sonra başlık kısmının (başlık kısmından kastım aşağıdaki dosya no, sicil no yazan yer) yazılarının tipi kalınlığını rengini vs. değiştirmek istiyorum ve bunları otomatik sığdırmak istiyorum. denemelerime rağmen yapamadım. yardımcı olursanız sevirim

var
i,Adet:integer;
excel:variant;
begin
adoQuery1.Open;
Adet:=adoQuery1.RecordCount;
excel:=CreateOleObject('Excel.Application');
excel.visible:=true;
excel.WorkBooks.Add;
excel.cells[1,1]:= 'Dosya No';
excel.cells[1,2]:= 'Sicil No';
excel.cells[1,3]:= 'Adı Soyadı';
excel.cells[1,4]:= 'Tc Kimlik No';
excel.cells[1,5]:= 'Telefon';
excel.cells[1,6]:= 'İşyeri Mevkii';
excel.cells[1,7]:= 'İşyeri No';
excel.cells[1,8]:= 'Metrekaresi';
excel.cells[1,9]:= 'Kira Bedeli';
excel.cells[1,10]:= 'Başlangıç Tarihi';
excel.cells[1,11]:= 'Bitiş Tarihi';

adoQuery1.First;
for i:=2 to Adet+1 do begin
excel.ActiveSheet.Cells[i,1] := DBGrid1.Columns[0].Field.Text;
excel.ActiveSheet.Cells[i,2] := DBGrid1.Columns[1].Field.Text;
excel.ActiveSheet.Cells[i,3] := DBGrid1.Columns[2].Field.Text;
excel.ActiveSheet.Cells[i,4] := DBGrid1.Columns[3].Field.Text;
excel.ActiveSheet.Cells[i,5] := DBGrid1.Columns[4].Field.Text;
excel.ActiveSheet.Cells[i,6] := DBGrid1.Columns[5].Field.Text;
excel.ActiveSheet.Cells[i,7] := DBGrid1.Columns[6].Field.Text;
excel.ActiveSheet.Cells[i,8] := DBGrid1.Columns[7].Field.Text;
excel.ActiveSheet.Cells[i,9] := DBGrid1.Columns[8].Field.Text;
excel.ActiveSheet.Cells[i,10]:= DBGrid1.Columns[9].Field.Text;
adoQuery1.Next;
end;
end;
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen thelvaci »

Bu tarz durumlarda, benim kullandığım yöntem Excel'i açmak; bir macro kaydı başlatmak, yapacağım işlemleri yapmak, ardından macro'yu durdurmak ve oluşturduğu kodu Delphi'ye uydurmak. ;)
mazhargemci
Üye
Mesajlar: 101
Kayıt: 13 Şub 2015 09:32

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen mazhargemci »

ya adam macroyu tam olarak bilmiyorsa :(
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen xozcanx »

Kod: Tümünü seç

excel.Range['A3:I3'].Font.Bold := True;             // A3 Hüçresi ile I3 hücre aralığını kalın yapar.
excel.Range['A3', 'x1000'].EntireColumn.AutoFit;          // otamatik stun genişliği A3 ile X1000 arası :)
excel.Range['A3', 'X1000'].Rows.AutoFit;  
excel.RANGE['A1', 'J1'].Font.Size := 14;                      // Yazı büyüklüğü
excel.RANGE['A1', 'J1'].Font.Color   := $00F7F7F7;     // senklendirme işlemi için
Ayrıca Burayada Bir gözatın Bence Buraadan...
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
mazhargemci
Üye
Mesajlar: 101
Kayıt: 13 Şub 2015 09:32

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen mazhargemci »

teşekkürler çok işime yaradı.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen thelvaci »

mazhargemci yazdı:ya adam macroyu tam olarak bilmiyorsa :(
Bilmemek ayıp değildir, ama öğrenmemek çok ayıptır. Hazır çözümler kimseye bir şey katmaz. Kimse annesinin karnında öğrenmedi, ama bu yaklaşım tarzı yaklaşımı sergileyenlerin asla öğrenemeyeceklerinin kanıtıdır maalesef.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen esistem »

Selam,
@mazhargemci senin excelde makro yazmayı bilmene gerek yok, sen sadece makrolara tıklayıp kaydı başlat de, sonra git bi hücreyi tarih formatına ayarla, bir başkasını para birimi ayarla vs.vs. sonra da gir makroya bak neler yapmışsın gör. En basitinden az önce bir tane yaptım, hücrenin tekine number format atadım, makro kaydını incele dediğimde çıkan sonuç aşağıda.

Kod: Tümünü seç

Sub Makro1()
'
' Makro1 Makro
'

'
    Range("N7").Select
    Selection.NumberFormat = "#,##0.0000"
End Sub
kısaca hücreyi number format vermek istiyorsan cells[5,7].NumberFormat:='#,##.0000' gibi bir kod yazıcaksın.
mazhargemci
Üye
Mesajlar: 101
Kayıt: 13 Şub 2015 09:32

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma

Mesaj gönderen mazhargemci »

Kod: Tümünü seç

procedure TForm1.FormShow(Sender: TObject);
var
i:integer;
begin
with adoquery1 do
begin
 AdoQuery1.Active   := True;
  for i := 0 to DBGrid1.Columns.Count - 1 do
   if DBGrid1.Columns[i].Width > 150 then DBGrid1.Columns[i].Width := 150;
 sql.Clear;
 sql.Add('select A_DosyaNo as [Dosya No], A_SicilNo as [Sicil No],') ;
  sql.Add('A_AdiSoyadi as [Adı Soyadı], A_TcKimlik as [Tc Kimlik No], A_Telefon as [Telefon], A_Adres as [İkametgah Adresi], ');
  sql.Add('A_Mahalle as [Mahallesi], A_Ada as [Ada], A_Parsel as [Parsel], ');
  sql.Add('A_isyeriMevkii as [İşyeri Mevkii], A_isyeriNo as [İşyeri No], A_Metrekaresi as [Metrekaresi], ');
  sql.Add('A_Elektrik as [Elektrik Abonesi], A_Suu as [Su Abonesi], A_KiraBedeli as [Kira Bedeli], A_BaslaTar as [Başlangıç Tarihi], A_BitisTar as [Bitiş Tarihi],') ;
 sql.Add('A_BelgeAdi as [Belge Adı], A_BelgeTip as [Belge Tip], A_BelgeTip, A_BelgeAdi');
  sql.Add('from KiralamaTablo');
  end;
AdoQuery1.Active   := True;
  for i := 0 to DBGrid1.Columns.Count - 1 do
   if DBGrid1.Columns[i].Width > 200 then DBGrid1.Columns[i].Width := 200;
end;
bu şekilde yazdığımızca programı çalıştırınca zaman dbedit17: field 'A_BitisTar' not found şeklinde hata veriyor nedense dbedit17 diye bileşen var ve A_BitisTar diyede veritaban alan tabanı mevcut. bu kodları yazmayınca programda bir sıkıntı da yok. Ancak,

Kod: Tümünü seç

sql.Add('A_BelgeAdi as [Belge Adı], A_BelgeTip as [Belge Tip], A_BelgeTip, A_BelgeAdi');
  sql.Add('from KiralamaTablo');
  end;
kısmını yazmazsak hatayı almıyorum fakat işlem gerçekleşmiyor sizce neden olabiliyordur
Cevapla