簡體   English   中英

如何在C#中打印DataGridView?

[英]How can i print DataGridView in C# ?

我有一個datagridview來顯示我的條目,並且我希望像Excel工作表一樣打印出來。

有什么方法可以完全打印datagridview,或者您建議使用哪種控件將數據存儲並打印?

或者如何在C#中使用HTML表格來幫助我創建和打印它們?

是一個解決方案。

在線有很多解決方案。 你可以在這里谷歌

 // make a function named zpt 

 int rw=dataGridView1.Rows.Count;     //define rw as globly variable in form
 public void zpt()
    {
         PrintDialog pd = new PrintDialog();
         PrintDocument pdoc = new PrintDocument();
        PrinterSettings ps = new PrinterSettings();
        Font font = new Font("Arial", 10);
        PaperSize psz = new PaperSize("Custom", 100, 200);
        pd.Document = pdoc;
        pd.Document.DefaultPageSettings.PaperSize = psz;
        pdoc.DefaultPageSettings.PaperSize.Height = 820;
        pdoc.DefaultPageSettings.PaperSize.Width = 700;
        pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage);
        DialogResult res = pd.ShowDialog();
        if (res == DialogResult.OK)
        {
            PrintPreviewDialog prv = new PrintPreviewDialog();
            prv.Document = pdoc;
            res = prv.ShowDialog();
            if (res == DialogResult.OK)
            {
                pdoc.Print();
            }
        }

    }
    void pdoc_PrintPage(object sender, PrintPageEventArgs e)
    {
        Graphics graphics = e.Graphics;
        Font font = new Font("Courier New", 10);
        float fontHeight = font.GetHeight();
        int startX = 50;
        int startY = 65;
        int Offset = 40;
        graphics.DrawString("Welcome to Bakery Shop", new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
        Offset = Offset + 20;
        string underLine = "------------------------------------------";
        graphics.DrawString(underLine, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
        Offset = Offset + 20;
        int a = dataGridView1.Rows.Count;
        for (int i = 0; i < a; i++)
        {
            graphics.DrawString(Convert.ToString(dataGridView1.Rows[i].Cells[0].Value), new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
            graphics.DrawString("\t"+Convert.ToString(dataGridView1.Rows[i].Cells[1].Value), new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
            Offset = Offset + 20;
        }
    }



    private void button1_Click(object sender, EventArgs e)
    {

        dataGridView1.Rows.Add();
        dataGridView1.Rows[rw].Cells[0].Value = textBox1.Text;
        dataGridView1.Rows[rw].Cells[1].Value = textBox2.Text;
        rw++;
    }

    private void button2_Click(object sender, EventArgs e)
    {
       // on print Button which is in your window for code this...
        zpt();
    }

首先,您必須了解.NET Framework庫中的PrintDocument類,該類可幫助您打印任何矩形,而您的任務是將datagridview中的表轉換為矩形(或繪制與datagridview中的表匹配的新矩形,包括繪制大小字符串(這些字符串是單元格的內容)?)。 之后,您可以使用PrintDocument類中的方法和更多方法開始打印。

http://www.codeproject.com/KB/printing/printingdatagridview.aspx

您必須首先加入codeproject網絡才能下載示例代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM