Mssql den excel e aktarımda başlıkları nasıl alabilirim

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
secret_boy
Üye
Mesajlar: 151
Kayıt: 17 Kas 2005 04:46

Mssql den excel e aktarımda başlıkları nasıl alabilirim

Mesaj gönderen secret_boy »

Aşağıdaki kod ile Mssql den verileri excel'e aktarıyorum fakat başlıkları alamıyorum bunu nasıl alabilirim ne eklemem gerekiyor yardım ederseniz sevinirim .

Kod: Tümünü seç

procedure ExportRecordsetToMSExcel(DestName: string; Data: _Recordset);
var
  ovExcelApp: OleVariant;
  ovExcelWorkbook: OleVariant;
  ovWS: OleVariant;
  ovRange: OleVariant;
begin
  ovExcelApp := CreateOleObject('Excel.Application'); //If Excel isnt installed will raise an exception
  try
    ovExcelWorkbook   := ovExcelApp.WorkBooks.Add;
    ovWS := ovExcelWorkbook.Worksheets.Item[1]; // go to first worksheet
    ovWS.Activate;
    ovWS.Select;
    ovRange := ovWS.Range['A1', 'A1']; //go to first cell
    ovRange.Resize[Data.RecordCount, Data.Fields.Count];
    ovRange.CopyFromRecordset(Data, Data.RecordCount, Data.Fields.Count); //this copy the entire recordset to the selected range in excel
    ovWS.SaveAs(DestName, 1, '', '', False, False);
  finally
    ovExcelWorkbook.Close(SaveChanges := False);
    ovWS := Unassigned;
    ovExcelWorkbook := Unassigned;
    ovExcelApp := Unassigned;
  end;
end;
sado.320
Üye
Mesajlar: 28
Kayıt: 18 Nis 2016 01:53

Re: Mssql den excel e aktarımda başlıkları nasıl alabilirim

Mesaj gönderen sado.320 »

delphi hangi sürümünü kullanıyorsun
secret_boy
Üye
Mesajlar: 151
Kayıt: 17 Kas 2005 04:46

Re: Mssql den excel e aktarımda başlıkları nasıl alabilirim

Mesaj gönderen secret_boy »

delphi 7 sürümü
sado.320
Üye
Mesajlar: 28
Kayıt: 18 Nis 2016 01:53

Re: Mssql den excel e aktarımda başlıkları nasıl alabilirim

Mesaj gönderen sado.320 »

secret_boy yazdı:delphi 7 sürümü
hiç kod yazmadan fastreport üzerinde kolaylıkla pdf,excel,png gibi formantlara aktara bilirsin verilerini ve istediğin alanları göstere bilirsin.
secret_boy
Üye
Mesajlar: 151
Kayıt: 17 Kas 2005 04:46

Re: Mssql den excel e aktarımda başlıkları nasıl alabilirim

Mesaj gönderen secret_boy »

kod ile olduğunda nasıl yapılır bunu öğrenmek istiyorum
ertank
Kıdemli Üye
Mesajlar: 1665
Kayıt: 12 Eyl 2015 12:45

Re: Mssql den excel e aktarımda başlıkları nasıl alabilirim

Mesaj gönderen ertank »

Sadece fikir verebilirim. OleVariant ile çok çalışmışlığım yok.

Kod: Tümünü seç

procedure ExportRecordsetToMSExcel(DestName: string; Data: _Recordset);
var
  ovExcelApp: OleVariant;
  ovExcelWorkbook: OleVariant;
  ovWS: OleVariant;
  ovRange: OleVariant;
  i: Integer;  // <-- döngü için gerekli olacak.
begin
  ovExcelApp := CreateOleObject('Excel.Application'); //If Excel isnt installed will raise an exception
  try
    ovExcelWorkbook   := ovExcelApp.WorkBooks.Add;
    ovWS := ovExcelWorkbook.Worksheets.Item[1]; // go to first worksheet
    ovWS.Activate;
    ovWS.Select;
    // EKLENEN KOD BAŞLANGIÇ
    for i:=1 to Data.Fields.Count do
    begin
      // Bu döngü içinde doğru komutları kullanmalısın. Aşağıdaki ovWS doğru olmayabilir. Bu kısım bilmediğim  kısım oluyor. 
      // Aşağıda bilgi yazacağın hücreye gitmelisin.
      // 64+1 = 65, Chr(65) = A harfi (ASCII tablo üzerinden kontrol edersin), i rakamı ilerledikçe B, C, D diye harfler artacak
      // Her zaman ilk satıra başlık bilgisi yazacaksın. Dolayısı ile A1, B1, C1 diye ilerleyeceksin.
      ovWS.Cells[Chr(i+64)+'1', Chr(i+64)+'1'].Select;
      // Aşağıda ise Alan adını ilgili hücre içine yazma işlemini yapmalısın.
      ovWS.Cells.Value := Data.Fields[i-1].FieldName;  // Fields[] indeksi sıfır ile başlar
    end;
    ovRange := ovWS.Range['A2', 'A2'];
    // EKLENEN KOD BİTİŞ
    ovRange.Resize[Data.RecordCount, Data.Fields.Count];
    ovRange.CopyFromRecordset(Data, Data.RecordCount, Data.Fields.Count); //this copy the entire recordset to the selected range in excel
    ovWS.SaveAs(DestName, 1, '', '', False, False);
  finally
    ovExcelWorkbook.Close(SaveChanges := False);
    ovWS := Unassigned;
    ovExcelWorkbook := Unassigned;
    ovExcelApp := Unassigned;
  end;
end;
Cevapla