Delphi Can

Orjinalini görmek için tıklayınız: DBGrid den Excel Aktarımı
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2 3 4
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;
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?
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)
(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.
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ı?
(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.
Raporu dbgride sql sorgusuyla mı aktarıyorsunuz?
(15-05-2021, Saat: 13:07)sunbeki Adlı Kullanıcıdan Alıntı: [ -> ]Raporu dbgride sql sorgusuyla mı aktarıyorsunuz?
evet
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 ;


@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;
Sayfalar: 1 2 3 4