Arkadaşlar bu sorun benimde yanlış hatırlamıyosam başıma gelmişti, ama nasıl çözdüğümü hatırlamıyom, koda baktım pastespecial felan demişim, projeyi önceden yaptığım için şuan kodları pek hatırlamıyorum ama sizi excel yazdırdığım proceduru gönderiyorum umarım işinize yarar... Hem yukarda başka arkadaşlar başlıklarla ilgili sorunu yazmış unuda kodumdan nasıl yaptığımı anlayabilir.. Bu koduda hüseyin abinin konunun başında verdiği kodu kullanarak yaptım. Hüseyin abiye tekrar teşekkürler onun sayesinde excel e hızlı bir veri aktarımı yaptım...
Kod: Tümünü seç
procedure TFMainform.ExcellSubeleriYaz;
var
adet:integer;
//geneltoplam:ingeter;
const
ilksatir=2;
ilksutun=7;
begin
////Başlık yaz
hucre1:='A'+inttostr(1);
hucre2:='Z'+inttostr(1);
xsayfa.range[hucre1,hucre2].mergecells:=true;
xsayfa.range[hucre1,hucre2].borders[1].linestyle:=1;
xsayfa.range[hucre1,hucre2].borders[2].linestyle:=1;
xsayfa.range[hucre1,hucre2].borders[3].linestyle:=1;
xsayfa.range[hucre1,hucre2].borders[4].linestyle:=1;
xsayfa.cells[1,1]:='Zimmet Detay Raporu';
xsayfa.cells[1,1].HorizontalAlignment := xlCenter;
xsayfa.cells[1,1].font.size:=15;
xsayfa.cells[1,1].font.bold:=true;
xsayfa.cells[1,1].RowHeight:=22;
///Subeleri Yaz
dm.IBDsetsubeler.First;
sira:=1;
control:=0;
liste := TStringList.Create;
liste1:= TStringList.Create;
liste2:= TStringList.Create;
liste3:= TStringList.Create;
liste4:= TStringList.Create;
liste5:= TStringList.Create;
while not dm.IBDsetsubeler.Eof do
begin
hucre1:='H'+inttostr(2);
hucre2:='Z'+inttostr(2);
xsayfa.range[hucre1,hucre2].borders[1].linestyle:=1;
xsayfa.range[hucre1,hucre2].borders[2].linestyle:=1;
xsayfa.range[hucre1,hucre2].borders[3].linestyle:=1;
xsayfa.range[hucre1,hucre2].borders[4].linestyle:=1;
xsayfa.cells[ilksatir,ilksutun+dm.IBDsetsubeler.RecNo]:=dm.IBDsetsubelerSUBE_ADI.AsString;
xsayfa.cells[1,1].HorizontalAlignment := xlCenter;
xsayfa.cells[1,1].font.size:=15;
xsayfa.cells[1,1].font.bold:=true;
xsayfa.range[hucre1,hucre2].RowHeight:=60;
xsayfa.range[hucre1,hucre2].ColumnWidth:=2.5;
xsayfa.range[hucre1,hucre2].HorizontalAlignment := xlGeneral;
xsayfa.range[hucre1,hucre2].VerticalAlignment := xlBottom;
xsayfa.range[hucre1,hucre2].WrapText := False;
xsayfa.range[hucre1,hucre2].Orientation := 90;
xsayfa.range[hucre1,hucre2].AddIndent := False;
xsayfa.range[hucre1,hucre2].IndentLevel := 0;
xsayfa.range[hucre1,hucre2].ShrinkToFit := False;
xsayfa.range[hucre1,hucre2].ReadingOrder := xlContext;
xsayfa.range[hucre1,hucre2].MergeCells := False;
dm.IBDsetStoklar.First;
while not dm.IBDsetStoklar.Eof do
begin
//FrmWaitCreate(dm.IBDsetStoklarSTOK_ADI.AsString);
dm.IBQ.Close;
dm.IBQ.SQL.Clear;
dm.IBQ.SQL.Add('select z.stok_id,z.ver_adet,z.sube_id from zimmetler z');
dm.IBQ.SQL.Add('where z.stok_id like'+#39+'%'+dm.IBDsetStoklarID.AsString+'%'+#39);
dm.IBQ.SQL.Add('and z.sube_id like'+#39+'%'+dm.IBDsetsubelerID.AsString+'%'+#39);
dm.IBQ.Open;
adet:=dm.ibq.Fields[1].AsInteger;
str := IntToStr(adet);
liste.Add(str);
str := '';
if control=0 then
begin
str1 := IntToStr(sira);
liste1.Add(str1);
str1 := '';
str2 := dm.IBDsetStoklarSTOK_ADI.AsString;
liste2.Add(str2);
str2 := '';
str3 := dm.IBDsetStoklarStok_tipi.AsString;
liste3.Add(str3);
str3 := '';
sira:=sira+1;
end;
dm.IBDsetStoklar.Next;
////stoklar whilw döngü sonu
end; ///subeler while döngü sonu
control:=1;
//stok adedi
Mem := TMemoryStream.Create;
Liste.SaveToStream(Mem);
ClipBoard.SetTextBuf(Mem.Memory);
xApp.ActiveSheet.cells[ilksatir+1,ilksutun+dm.IBDsetsubeler.RecNo].pastespecial;
liste.Clear;
dm.IBDsetsubeler.Next;
end;
//sira
Mem1 := TMemoryStream.Create;
Liste1.SaveToStream(Mem1);
ClipBoard.SetTextBuf(Mem1.Memory);
xApp.ActiveSheet.cells[ilksatir+1,1].pastespecial;
//stok adı
Mem2 := TMemoryStream.Create;
Liste2.SaveToStream(Mem2);
ClipBoard.SetTextBuf(Mem2.Memory);
// xapp.ActiveSheet.range[hucre1,hucre2].pastespecial;
xApp.ActiveSheet.cells[ilksatir+1,2].pastespecial;
//stok tipi
Mem3 := TMemoryStream.Create;
liste3.SaveToStream(Mem3);
ClipBoard.SetTextBuf(Mem3.Memory);
xApp.ActiveSheet.cells[ilksatir+1,7].pastespecial;
///Stok adedini yazdırıyoruz
dm.IBDsetStoklar.First;
while not dm.IBDsetStoklar.Eof do
begin
hucre1:='B'+inttostr(ilksatir+dm.IBDsetStoklar.RecNo);
hucre2:='F'+inttostr(ilksatir+dm.IBDsetStoklar.RecNo);
xsayfa.range[hucre1,hucre2].mergecells:=true;
str4 := dm.IBDsetStoklarSTOK_ADET.AsString;
liste4.Add(str4);
str4 :='';
dm.IBDsetStoklar.Next;
end;
xsayfa.cells[ilksatir,ilksutun+dm.IBDsetsubeler.RecordCount+2]:='GENEL STOK ADEDİ';
Mem4 := TMemoryStream.Create;
liste4.SaveToStream(Mem4);
ClipBoard.SetTextBuf(Mem4.Memory);
xApp.ActiveSheet.cells[ilksatir+1,ilksutun+dm.IBDsetsubeler.RecordCount+2].pastespecial;
////Dağıtılan stok adedini yazıdırıyoruz
dm.IBDsetStoklar.First;
while not dm.IBDsetStoklar.Eof do
begin
dm.IBQ.Close;
dm.IBQ.SQL.Clear;
dm.IBQ.SQL.Add('select sum(z.ver_adet), z.stok_id from zimmetler z');
dm.IBQ.SQL.Add('where (z.stok_id='+dm.IBDsetStoklarID.AsString+')');
dm.IBQ.SQL.Add('group by z.stok_id');
dm.IBQ.Open;
if dm.IBQ.Fields[0].AsString='' then
begin
str5:='0';
end
else
begin
str5 := dm.IBQ.Fields[0].AsString;
end;
// str5 := dm.IBQ.Fields[0].AsString;
liste5.Add(str5);
str5 :='';
dm.IBDsetStoklar.Next;
end;
xsayfa.cells[ilksatir,ilksutun+dm.IBDsetsubeler.RecordCount+1]:='GENEL TOPLAM';
Mem5 := TMemoryStream.Create;
liste5.SaveToStream(Mem5);
ClipBoard.SetTextBuf(Mem5.Memory);
xApp.ActiveSheet.cells[ilksatir+1,ilksutun+dm.IBDsetsubeler.RecordCount+1].pastespecial;
//copyalama sonucu sonraki bozuk kayıtlar siliniyo
xsayfa.Range['A'+inttostr(ilksatir+1+dm.IBDsetStoklar.RecordCount),'AB5000'].Rows.delete;
//aralıkdaki hücrelere çerçeve ekleniyo
xsayfa.RANGE['A1'+':'+'Z'+inttostr(ilksatir+1+dm.IBDsetStoklar.RecordCount)].Borders.LineStyle := xlContinuous;
end;