excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 101
- Kayıt: 13 Şub 2015 09:32
excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma
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;
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;
Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma
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. 

-
- Ü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
ya adam macroyu tam olarak bilmiyorsa 

Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma
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
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
-
- Ü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
teşekkürler çok işime yaradı.
Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma
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.mazhargemci yazdı:ya adam macroyu tam olarak bilmiyorsa
Re: excele aktardıktan sonra yazı tipi değişimi ve otomatik sığdırma
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.
kısaca hücreyi number format vermek istiyorsan cells[5,7].NumberFormat:='#,##.0000' gibi bir kod yazıcaksın.
@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
-
- Ü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
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;
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;