Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
DBGrid den Excel Aktarımı
#11
CesuRBu şekilde denedim yine toplamadı. Nasıl yapmam gerekiyor?





(13-05-2021, Saat: 15:07)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar. Hepinizin bayramını kutluyorum .İyi bayramlar.

Hücrenin toplamını SUM ile almak istedim ama bir yerde yanlışım var sanırım yardımcı olabilecek misiniz?


 end;
    DBGDataset.First;  k2:=1;
   While not(DBGDataset.Eof) do
   begin
     k2:=k2+1;
     For k1:=0 to DBG.Columns.Count-1 do
     begin
       Sheet.Cells[K2,K1+8].Formula := '=SUM(H3:H' + InttoStr(K2 - 1) + ')';
       Sheet.Cells[k2,k1+1]:=DBG.Columns[k1].Field.AsString;
       Sheet.Columns['A:AC'].EntireColumn.AutoFit;
     end;
    DBGDataset.Next;
   end;
   WORKBOOK.SaveAs(FileName);
   ShowMessage('Excell Formatında Kayıt Tamamlandı');

Baktığım iki örnekte şu şekilde

ExcelApp.Range['A11', 'A11'].Formula := '=Sum(A1:A10)';

ExcelSheet.cells[satir,9] := '=SUM(B' + inttostr(satir)+':H' + inttostr(satir) + ')'


Excel deki hücreye formul yazmak için diye birşey paylaşılmış

Function ExcelSetCellFormula(
  Excel         : Variant;
 FormulaString : ShortString;
 RowNum, ColNum: Integer): Boolean;
Begin
 Result := True;
 Try
   Excel.
     ActiveSheet.
       Cells[RowNum, ColNum].
         Formula := FormulaString;
 Except
   Result := False;
 End;
End;

Excel hücresindeki formulü getirir.
Function ExcelGetCellFormula(

  Excel         : Variant;

  RowNum, ColNum: Integer): ShortString;

Begin

  Result := ' ';

  Try

    Result := Excel.

                ActiveSheet.

                Cells[RowNum, ColNum].

                Formula;

  Except

    Result := ' ';

  End;
End;
Cevapla
#12
Arkadaşlar Merhaba; Bu şekilde Kod bloğunu düzelttim 2 yerde sorun buldum ama düzeltemedim yardımlarınıza ihtiyacım var.

1- Bu satırı aktif ettiğim zaman bütün hücreleri metin haline çeviriyor ve hesaplama yapmıyor sadece B2 sütününü metin yapmak istiyorum;
//        Sheet.Columns[Row+2].NumberFormat := '@'; //Text  

2- Sorunda hesaplama yapıyor ama 3 satır ise 2 satırda toplam yazıyor.
   Sheet.Cells[Col,8].Formula := '=SUM(H2:H' + InttoStr(Col - 1) + ')';
 


  try
   For Row:=0 to DBG.Columns.Count-1 do
   begin
     Sheet.Cells[1,Row+1]:=DBG.Columns[Row].Title.Caption;
     Sheet.Columns[Row+1].ColumnWidth:=(0.139*DBG.Columns[Row].Width);
     Sheet.Range['A1','AD1'].Font.Bold:=True;
     Sheet.Range['A1','AD1'].Font.Color:=clRed;
 end;
   DBGDataset.First;  Col:=1;
   While not(DBGDataset.Eof) do
   begin
     Col:=Col+1;
     For Row:=0 to DBG.Columns.Count-1 do
     begin
       Excel.Cells[Col,Row+1].HorizontalAlignment :=-4131;
       Sheet.Cells[Col,Row+1]:=DBG.Columns[Row].Field.AsString;
//        Sheet.Columns[Row+2].NumberFormat := '@'; //Text   
       Sheet.Columns['A:AC'].EntireColumn.AutoFit;
             end;
    DBGDataset.Next;
   end;
   Sheet.Cells[Col,8].Formula := '=SUM(H2:H' + InttoStr(Col - 1) + ')';
   WorkBook.SaveAs(FileName);
   showmessage('Kayıtlar Excele Başarılı Bir Şekilde Aktarıldı');

Rica etsem yardımcı olurmusunuz?
Cevapla
#13
Toplama yaparken sonradan dikkatimi çekti , sen satırları text formata döndürüyorsun. bu yüzden toplam alamıyor olabilirsin. Gündüz fırsat bulunca sana ufak bir örnek hazırlayıp yardım etmeye çalışacağım. Şuan kafam durdu Smile)
Cevapla
#14
(15-05-2021, Saat: 02:34)CesuR Adlı Kullanıcıdan Alıntı: Toplama yaparken sonradan dikkatimi çekti , sen satırları text formata döndürüyorsun. bu yüzden toplam alamıyor olabilirsin. Gündüz fırsat bulunca sana ufak bir örnek hazırlayıp yardım etmeye çalışacağım. Şuan kafam durdu Smile)
Tamam cesur kardeşim. Bekleyeceğim.
Cevapla
#15
Ben de küçük bir deneme yaptım. Excelde toplam hücresine #AD? hatası veriyor ama excelde F2 ile hücreye girip çıktığımda toplama işlemini yapıyor. Delphi'de kod ile excel hücresine girip tekrar çıkılabilir mi?

Birde toplamı delphi'de toplayıp excelde ilgili hücreye yazdırsanız olmaz mı?
Cevapla
#16
(15-05-2021, Saat: 12:32)sunbeki Adlı Kullanıcıdan Alıntı: Ben de küçük bir deneme yaptım. Excelde toplam hücresine #AD? hatası veriyor ama excelde F2 ile hücreye girip çıktığımda toplama işlemini yapıyor. Delphi'de kod ile excel hücresine girip tekrar çıkılabilir mi?

Birde toplamı delphi'de toplayıp excelde ilgili hücreye yazdırsanız olmaz mı?

Olabilir bunu nasıl yapabilirim çünkü raporun bitimine denk gelmeli.
Cevapla
#17
Raporu dbgride sql sorgusuyla mı aktarıyorsunuz?
Cevapla
#18
(15-05-2021, Saat: 13:07)sunbeki Adlı Kullanıcıdan Alıntı: Raporu dbgride sql sorgusuyla mı aktarıyorsunuz?
evet
Cevapla
#19
Su an bilgisayarda değilim. Hatalı yazımlar olabilir.

With IBQUERY1 do
  begin
     Sql.clear ;
     Sql.add ('select sum(toplanacak_alan) as toplam from tablo_adi') ;
     Sql.add('Where şartlar') ;
     Open ;
     Sheet.cells[col,8]:= fieldbyname('toplam').text ;
End ;


Cevapla
#20
@OZCANK @CesuRnın dediği gibi text formata döndürme sıkıntılı görünüyor. Şunu dener misin?
  satir := 1;
  sutun := 1;
  DBGDataset.First;
  While not DBGDataset.EOF do begin
    for i := 0 to DBGrid2.Columns.Count-1 do
      Excel.Cells[satir,sutun+i].Value := DBGrid2.Columns[i].Field.Value;
    DBGDataset.Next;
    inc(Satir);
  end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  DBGrid Columns Otomatik Boyutlandırma Halil Han BADEM 8 8.208 23-01-2025, Saat: 14:51
Son Yorum: OZCANK
  dbgrid sutun toplamini alip lazreport da gostermek sadikacar60 6 1.113 02-12-2024, Saat: 12:21
Son Yorum: sadikacar60
  Excel içeri alma Para birimi gonulali 3 845 28-10-2024, Saat: 05:34
Son Yorum: griposter
Question Fastreport - OleObject - Excel Etkileşimde Bulunma YILDIRIMBEY 2 839 05-08-2024, Saat: 12:11
Son Yorum: YILDIRIMBEY
  Excel tablosuna resim ekleme enigma 3 1.211 21-05-2024, Saat: 12:16
Son Yorum: enigma



Konuyu Okuyanlar: 1 Ziyaretçi