![]() |
|
DBGrid den Excel Aktarımı - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: DBGrid den Excel Aktarımı (/showthread.php?tid=5985) |
DBGrid den Excel Aktarımı - OZCANK - 11-05-2021 Arkadaşlar Merhaba , bir knuda yardıma ihtiyacım var şöyle; Delphi 7 kullanıyorum DBGrid1 deki verileri excel e aktarıyorum fakat "Belge No" , "Cari Kodu" alanlarının başında sıfır varsa excel e sıfırsız yazıyor nasıl düzeltebilirim? if Col>= 6 then Sheet.Cells[Row,Col].NumberFormat := '########'; // Cari Kod if Col>= 5 then Sheet.Cells[Row,Col].NumberFormat := '0,00'; // Miktar if Col>= 8 then Sheet.Cells[Row,Col].NumberFormat := '0,00'; // Brüt Tutar DBGrid den Excel Aktarımı - shooterman - 11-05-2021 Selamlar Formatfloat işleminşi yaptıktan sonra excel aktarımını yapmanız uygun olacaktır. Aşağıdaki linki takip ediniz. http://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat DBGrid den Excel Aktarımı - CesuR - 12-05-2021 Excele sıfırsız yazmasının nedeni , exceldeki ilgili sütünun hücre biçimlendir kısmından sayısal olarak ayarlamadığın için yapıyor olabilir. Sen bilgiyi gönderirken ne kadar formatlarsan formatla hücre ayarları yapılmadıysa garip çıktılar alabilirsin. Baştan onu kontrol etmeni tavsiye ederim. DBGrid den Excel Aktarımı - sunbeki - 12-05-2021 Hocam dbgriddeki verileri excele nasıl aktarıyorsunuz? Kodları paylaşmanız mümkün mü? Cvp: DBGrid den Excel Aktarımı - OZCANK - 12-05-2021 Bu şekilde yaptım ama hata veriyor ; --------------------------- Debugger Exception Notification --------------------------- Project MENU.exe raised exception class EOleException with message 'Erişim Hatası : 'EXCELKAYIT.xls''. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- While not(DBGDataset.Eof) do
begin
float := 00000000;
k2:=k2+1;
For k1:=0 to DBG.Columns.Count-1 do
begin
if Col>= 2 then
Sheet.Cells[Row,Col].FormatFloat('00000000', float); // Cari Kod
Sheet.Cells[k2,k1+1]:=DBG.Columns[k1].Field.AsString;
Sheet.Columns['A:AC'].EntireColumn.AutoFit;
end;
DBGDataset.Next;
end;
WORKBOOK.SaveAs(FileName); /////////////////////// Burada hata veriyor.
ShowMessage('Excell Formatında Kayıt Tamamlandı');
finally
EXCEL.DisplayAlerts := False;
EXCEL.Quit;
EXCEL:=Unassigned;
DBGDataset.RecNo:=k3;
DBGDataset.EnableControls;
end;
end;
DBGrid den Excel Aktarımı - shooterman - 12-05-2021 Selamlar aşağıda örneği kendinize uyarlayabilirsiniz. procedure TForm5.SpeedButton4Click(Sender: TObject);
var
v,sayfa:variant;{v excel prg, sayfa calisma sayfasi}
say,i:integer;
begin
say:=dm.qryyuklenenkdv.recordcount;//query kayit sayisi
v:=createoleobject('excel.application');//exceli yarat
v.workbooks.add;//yeni calisma kitabini ekle
sayfa:=v.workbooks[1].worksheets[1];{Birinci calisma sayfasini sayfa degiskenine ata}
dm.qryyuklenenkdv.first;
sayfa.cells[4,2]:='Sıra No';
sayfa.cells[4,3]:= 'Alış Faturasının Tarihi' ;
sayfa.cells[4,4]:='Alış Faturasının Serisi';
sayfa.cells[4,5]:='Alış Faturasının Sıra Nosu';
sayfa.cells[4,6]:='Satıcının Adı-Soyadı / Ünvanı';
sayfa.cells[4,7]:='Satıcının Vergi Kimlik Numarası/TC Kimlik Numarası';
sayfa.cells[4,8]:='Alınan Mal ve/veya Hizmetin Cinsi';
sayfa.cells[4,9]:='Alınan Mal ve/veya Hizmetin Miktarı';
sayfa.cells[4,10]:='Alış Faturasının KDV Hariç Tutarı';
sayfa.cells[4,11]:='Alış Faturasının KDVsi';
sayfa.cells[4,12]:='Bünyeye Giren Mal ve/veya Hizmetin KDVsi';
sayfa.cells[4,13]:='GGB Tescil Nosu (Alış İthalat İse)';
sayfa.cells[4,14]:='Belgeye İlişkin İade Hakkı Doğuran İşlem Türü';
sayfa.cells[4,15]:='Yüklenim Türü';
sayfa.cells[2,8]:='YÜKLENİLEN KDV LİSTESİ';
for i:=1 to say do
begin
sayfa.cells[i+4,2]:= i ;
sayfa.cells[i+4,3]:=dm.qryyuklenenkdv.FieldByName('FATURATARIHI').text;
sayfa.cells[i+4,4]:=dm.qryyuklenenkdv.FieldByName('FATURASERI').text;
sayfa.cells[i+4,5]:=dm.qryyuklenenkdv.FieldByName('FATURANO').text;
sayfa.cells[i+4,6]:=dm.qryyuklenenkdv.FieldByName('FIRMAUNVANI').text;
sayfa.cells[i+4,7]:=dm.qryyuklenenkdv.FieldByName('VN').text;
sayfa.cells[i+4,8]:=dm.qryyuklenenkdv.FieldByName('STOKKODU').text;
sayfa.cells[i+4,9]:=dm.qryyuklenenkdv.FieldByName('MIKTAR').text;
sayfa.cells[i+4,10]:=dm.qryyuklenenkdv.FieldByName('FATURAARATOPLAM').text;
sayfa.cells[i+4,11]:=dm.qryyuklenenkdv.FieldByName('FATURAKDV').text;
sayfa.cells[i+4,12]:=dm.qryyuklenenkdv.FieldByName('URUNKDV').text;
sayfa.cells[i+4,15]:=dm.qryyuklenenkdv.FieldByName('YUKLENIMTURU').text;
dm.qryyuklenenkdv.next;
end;
v.visible:=true;//Exceli acip verileri goster
sayfa.Columns.AutoFit;// kolonları otomatik genişletir...
end;
DBGrid den Excel Aktarımı - CesuR - 13-05-2021 Erişim hatası almanızın iki nedeni olabilir. 1) Dosyayı kaydettiğiniz yer C gibi bir izin ise windows yazma izni vermiyor olabilir. Deneyebileceklerin - Windows uac kapalımı kontrol edin. - Programınızı delphiden değil de oluşturduğunuz exe yi yönetici olarak çalıştırıp deneyin. 2 ) Delphi ile excel sayfasını create edip kullandığınız için arkada çalışıyor olabilir. Kodunuzdaki WORKBOOK.SaveAs(FileName) kısmını finally bloğuna alıp deneyin. Burada ki display alert kısmını true yapıp gözlemleyin. Cvp: DBGrid den Excel Aktarımı - OZCANK - 13-05-2021 Emeği geçen arkadaşlarıma teşekkür ederim. İyi Bayramlar. Sağlıklı ve Mutluluk içerisinde. Sorunu bu şekilde çözdum; Sheet:=WorkBook.WorkSheets[1]; try For k1:=0 to DBG.Columns.Count-1 do begin Sheet.Cells[1,k1+1]:=DBG.Columns[k1].Title.Caption; Sheet.Columns[k1+1].ColumnWidth:=(0.139*DBG.Columns[k1].Width); Sheet.Columns[K1+2].NumberFormat := '@'; //Text olarak kolonu düzelttim. Sheet.Range['A1','AD1'].Font.Bold:=True; Sheet.Range['A1','AD1'].Font.Color:=clRed; end; DBGDataset.First; k2:=1; While not(DBGDataset.Eof) do begin Cvp: DBGrid den Excel Aktarımı - OZCANK - 13-05-2021 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ı');
Cvp: DBGrid den Excel Aktarımı - CesuR - 13-05-2021 (13-05-2021, Saat: 15:07)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar. Hepinizin bayramını kutluyorum .İyi bayramlar. 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; |