Yorumları: 374
Konuları: 66
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 115 Başlangıç
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
Yorumları: 703
Konuları: 74
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.636 Programcı
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
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 227
Konuları: 42
Kayıt Tarihi: 10-11-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 392 Acemi
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.
Yorumları: 121
Konuları: 24
Kayıt Tarihi: 18-03-2021
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 123 Başlangıç
Hocam dbgriddeki verileri excele nasıl aktarıyorsunuz? Kodları paylaşmanız mümkün mü?
Yorumları: 374
Konuları: 66
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 115 Başlangıç
12-05-2021, Saat: 17:31
(Son Düzenleme: 12-05-2021, Saat: 17:57, Düzenleyen: OZCANK.)
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;
Yorumları: 703
Konuları: 74
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.636 Programcı
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;
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 227
Konuları: 42
Kayıt Tarihi: 10-11-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 392 Acemi
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.
Yorumları: 374
Konuları: 66
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 115 Başlangıç
13-05-2021, Saat: 07:56
(Son Düzenleme: 13-05-2021, Saat: 07:58, Düzenleyen: OZCANK.)
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
Yorumları: 374
Konuları: 66
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 115 Başlangıç
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ı');
Yorumları: 227
Konuları: 42
Kayıt Tarihi: 10-11-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 392 Acemi
(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;
|