Otomatik sığdırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Otomatik sığdırma

Mesaj gönderen Serhat »

Selamlar;

Listview deki dataları excele aktarıyorum, fakat aktarılar 2. sayfaya kayıyor yani iki yanyana sayfaya çıkıyor.
Listview deki aktarılan verileri excelde tek bir sayfaya otomatik nasıl sığdıra bilirim...

Bu şekilde oluyor...
Resim


Benim yapmak istediğim...
Resim
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Otomatik sığdırma

Mesaj gönderen ertank »

Merhaba, Excel'e aktarım kodunu paylaşabilir misin?
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Otomatik sığdırma

Mesaj gönderen Lord_Ares »

//Otomatik kolon genişliği için

Kod: Tümünü seç

 
 excel.range['A1','L10'].EntireColumn.AutoFit;
 



//aktif sayfada kolon genişliğini ayarla

Kod: Tümünü seç

ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;
////kolon genişliğini ayarlamak için kullanabileceğin bir fonksiyon kullanımı isteğe bağlı :)))

Kod: Tümünü seç


Function ExcelSetColumnWidth(Excel : Variant; ColNum, ColumnWidth: Integer): Boolean;
Var
  RowWas : Integer;
  ColWas : Integer;
Begin
  Try
    RowWas := ExcelGetRow(Excel);
    ColWas := ExcelGetCol(Excel);
    ExcelSelectCell(Excel,1,ColNum);
    Excel.Selection.ColumnWidth := ColumnWidth;
    ExcelSelectCell(Excel,RowWas,ColWas);
    Result := True;
  Except
    Result := False;
  End;
End;

//satır yüksekliğini otomatik ayarla

Kod: Tümünü seç

excel.Range['A1','C10'].Rows.Autofit;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Otomatik sığdırma

Mesaj gönderen Lord_Ares »

ertank yazdı:Merhaba, Excel'e aktarım kodunu paylaşabilir misin?
Merhaba aşağıdaki şekilde aktarabilirsin

En üstteki Uses kısmına comobj eklemeyi unutmayın.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
excel: Variant;

BEGIN        
        excel:=CreateOleObject('excel.application');
        excel.Visible:=false;  // Exceli gizle
        try
         excel.workbooks.add;
         excel.ActiveSheet.cells[1,1].value:='ADI'; // exceldeki aktif sayfayanın birinci satır ve birinci sütünuna Adı yaz
         excel.ActiveSheet.cells[1,2].value:='FİYAT';// exceldeki aktif sayfayanın birinci satır ve ikinci sütünuna Fiyat yaz
         
        finally
        excel.visible:=true; // Exceli göster.
        end;
end;


ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Otomatik sığdırma

Mesaj gönderen ertank »

Lord_Ares yazdı: Merhaba aşağıdaki şekilde aktarabilirsin
Merhaba,

Aktarımı yapmayı öğrenmek için istememiştim mevcut kodu. Koda göre yardımcı olmak adına istemiştim. Eğer component vb. bir şekilde aktarım yapıyor ise farklı çözüm önermek gerekecektir.
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Otomatik sığdırma

Mesaj gönderen Serhat »

Cevaplar için teşekkür ederim.

Sanırım yanlış anlaşılma oldu, otomatik kolon genişliği işimi çözmez databaseden aktarılan verileri tek bir sayfaya otomatik olarak sığmasını nasıl yaptırabilirim...
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Otomatik sığdırma

Mesaj gönderen Lord_Ares »

aslında kolon genişliğini autofit yaparsanız kolondaki boşluklar kalkacak ve sayfaya sığacaktır. Ama siz derseniz ki sayfanın setup ayarlarını değiştirmek istiyorum. Bildiğim kadarıyla şöyle oluyor ama deneme şansım olmadı siz denerseniz umarım işinize yarar.

Kod: Tümünü seç

Worksheet.PageSetup.LeftMargin     :=  1; 
Worksheet.PageSetup.RightMargin    :=  1; 
Worksheet.PageSetup.TopMargin      :=  2; 
Worksheet.PageSetup.BottomMargin   := 2; 
Cevapla