Deniz Özkan | Datagridview İçerisindeki Verileri Çıktı Alma
15374
post-template-default,single,single-post,postid-15374,single-format-standard,ajax_fade,page_not_loaded,,footer_responsive_adv,qode-theme-ver-14.2,qode-theme-bridge,disabled_footer_top,wpb-js-composer js-comp-ver-5.4.7,vc_responsive

Datagridview İçerisindeki Verileri Çıktı Alma

Datagridview İçerisindeki Verileri Çıktı Alma

Herkese Merhabalar,

Projelerimden birinde kullandığım ve ilgili yardımı bulmakta zorlandığım bir konuyu bugün sizlerle birlikte çözüme kavuşturacağız 🙂

Datagridview nesnesinin satırlarını çıktı almak ya da önizlemesini görüntülemek konularına değineceğiz bugün. Datagridview dolduktan sonra (boş nesnenin çıktısını da alabiliriz) çıktı alma işlemini gerçekleştireceğimiz için Datagridview i nasıl dolduracağımız noktasına giriş yapmıyorum. Zira isteğiniz üzre manuel olarak ya da otomatik olarak doldurmuş olabilirsiniz. Şimdi gelelim hazır bir datagridview’in içeriğini yazdırmaya…

Öncelikle global olarak aşağıdaki değişkenleri tanımlamalıyız.

StringFormat strFormat;

ArrayList arrColumnLefts = new ArrayList();

ArrayList arrColumnWidths = new ArrayList();

int iCellHeight = 0;

int iTotalWidth = 0;

int iRow = 0;

bool bFirstPage = false;

bool bNewPage = false;

int iHeaderHeight = 0;

Formumuza bir adet printDocument nesnesi ekledik ve bu nesnenin PrintPage olayına aşağıdaki kodu ekliyoruz.

try

{

int SolMarjin = e.MarginBounds.Left;

int ToplamMarjin = e.MarginBounds.Top;

bool DahaSayfaVarMi = false;

int Genislik = 0;

IlkSayfa = true;

if (IlkSayfa)

{

foreach (DataGridViewColumn GridCol in dataGridView1.Columns)

{

Genislik = (int)(Math.Floor((double)((double)GridCol.Width /

(double)ToplamGenislik * (double)ToplamGenislik *

((double)e.MarginBounds.Width / (double)ToplamGenislik))));

BaslikYukseklik = (int)(e.Graphics.MeasureString(GridCol.HeaderText,

GridCol.InheritedStyle.Font, Genislik).Height) + 11;

 

ColumnSol.Add(SolMarjin);

ColumnGenislik.Add(Genislik);

SolMarjin += Genislik;

}

}

while (Satir <= dataGridView1.Rows.Count – 1)

{

DataGridViewRow GridRow = dataGridView1.Rows[Satir];

CellYukseklik = GridRow.Height + 5;

int iCount = 0;

if (ToplamMarjin + CellYukseklik >= e.MarginBounds.Height + e.MarginBounds.Top)

{

YeniSayfa = true;

IlkSayfa = false;

DahaSayfaVarMi = true;

break;

}

else

{

if (YeniSayfa)

{

e.Graphics.DrawString(“Çıktı Başlığı”, new Font(dataGridView1.Font, FontStyle.Bold),

Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top –

e.Graphics.MeasureString(“Çıktı Başlığı”, new Font(dataGridView1.Font,

FontStyle.Bold), e.MarginBounds.Width).Height – 13);

String strDate = DateTime.Now.ToLongDateString() + ” ” + DateTime.Now.ToShortTimeString();

e.Graphics.DrawString(strDate, new Font(dataGridView1.Font, FontStyle.Bold),

Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width –

e.Graphics.MeasureString(strDate, new Font(dataGridView1.Font,

FontStyle.Bold), e.MarginBounds.Width).Width), e.MarginBounds.Top –

e.Graphics.MeasureString(“Çıktı Başlığı”, new Font(new Font(dataGridView1.Font,

FontStyle.Bold), FontStyle.Bold), e.MarginBounds.Width).Height – 13);

 

ToplamMarjin = e.MarginBounds.Top;

foreach (DataGridViewColumn GridCol in dataGridView1.Columns)

{

e.Graphics.FillRectangle(new SolidBrush(Color.LightGray),

new Rectangle((int)ColumnSol[iCount], ToplamMarjin,

(int)ColumnGenislik[iCount], BaslikYukseklik));

e.Graphics.DrawRectangle(Pens.Black,

new Rectangle((int)ColumnSol[iCount], ToplamMarjin,

(int)ColumnGenislik[iCount], BaslikYukseklik));

e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font,

new SolidBrush(GridCol.InheritedStyle.ForeColor),

new RectangleF((int)ColumnSol[iCount], ToplamMarjin,

(int)ColumnGenislik[iCount], BaslikYukseklik), YaziTipi);

iCount++;

}

YeniSayfa = false;

ToplamMarjin += BaslikYukseklik;

}

iCount = 0;

foreach (DataGridViewCell Cel in GridRow.Cells)

{

if (Cel.Value != null)

{

e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font,

new SolidBrush(Cel.InheritedStyle.ForeColor),

new RectangleF((int)ColumnSol[iCount], (float)ToplamMarjin,

(int)ColumnGenislik[iCount], (float)CellYukseklik), YaziTipi);

}

e.Graphics.DrawRectangle(Pens.Black, new Rectangle((int)ColumnSol[iCount],

ToplamMarjin, (int)ColumnGenislik[iCount], CellYukseklik));

iCount++;

}

}

Satir++;

ToplamMarjin += CellYukseklik;

}

if (DahaSayfaVarMi)

e.HasMorePages = true;

else

e.HasMorePages = false;

}

catch (Exception exc)

{

MessageBox.Show(exc.Message, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);

}

Şimdi de eklediğimiz printDocument nesnesinin BeginPrint olayına aşağıdaki kodları yazıyoruz.

try

{

YaziTipi = new StringFormat();

YaziTipi.Alignment = StringAlignment.Near;

YaziTipi.LineAlignment = StringAlignment.Center;

YaziTipi.Trimming = StringTrimming.EllipsisCharacter;

ColumnSol.Clear();

ColumnGenislik.Clear();

CellYukseklik = 0;

Satir = 0;

IlkSayfa = true;

YeniSayfa = true;

ToplamGenislik = 0;

foreach (DataGridViewColumn dgvGridCol in dataGridView1.Columns)

{

ToplamGenislik += dgvGridCol.Width;

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);

}

Yazdıracağımız sayfayı böylece hazırlamış oluyoruz. Şimdi bu sayfanın önizlemesini görelim. Bunun için formumuza bir tane buton koyuyoruz ve bu butonun Click olayına aşağıdaki kodu yazıyoruz.  (** Daha önce eklemiş olduğumuz printDocument nesnesinin adının “YazdirmaSayfasi” olduğunu varsayıyorum. Projenizdeki ada göre düzenleme yapın lütfen.)

PrintPreviewDialog onizleme = new PrintPreviewDialog();

onizleme.Document = YazdirmaSayfasi;

onizleme.ShowDialog();

Tüm bu işlemleri yaptıktan sonra önizleme sayfasının üstündeki yazıcı simgesinden çıktı alabilirsiniz. Dilerseniz

PrintDialog yazdir = new PrintDialog();

yazdir.Document = YazdirmaSayfasi;

yazdir.UseEXDialog = true;

if (yazdir.ShowDialog() == DialogResult.OK)

{

printDocument1.Print();

}

kod bloğuyla, hazırlamış olduğunuz sayfayı direkt yazıcıya da gönderebilirsiniz.

Böylece datagridview nesnesinin içeriğindeki tüm verileri çıktı almış oluyoruz. Umarım sorununuzu çözmeye yardımcı olabilmiştir.

Bol kodlu, bol projeli günler dilerim 🙂

Henüz yorum yok

Yorum yapmak ister misiniz?