2009-02-18 94 views
14

我對.NET和C#相當新,但我有一個DataGridView,我想要打印。這樣做最好的方法是什麼?打印.NET DataGridView

+0

@Simon感謝您添加更多標籤! :o) – 2009-02-18 14:25:44

回答

3

您可以將DataGridView導出到Excel,然後從Excel中打印出來。

您也可以考慮不要在DataGridView中顯示數據,而是將其顯示在ReportViewer控件中,該控件可以導出爲PDF或Excel。從那裏可以打印你的數據。

+0

@Bliek謝謝你的建議!就像我在另一條評論中提到的那樣,我現在想盡量堅持這種控制......但我會牢記這一點! – 2009-02-18 14:50:51

+0

畢竟我最終這樣做了。我仍然在DataGridView中顯示數據,但如果用戶選擇打印它,我使用報告查看器。再次感謝! – 2009-02-18 16:11:51

3

恐怕沒有內置的打印支持。

您可能會訴諸使用第三方控件,例如內置支持打印的Infragistics WinGrid

+0

@Gerrie Schenck感謝您的鏈接!我認爲現在我會繼續努力嘗試使用當前的控制,但我會牢記這一點,因爲我需要它! – 2009-02-18 14:26:48

2

.NET WinForm控件(如datagridview)本身不支持打印。

但是,在datagridview的情況下,您可以調用'DrawToBitmap',然後將該位圖傳遞給打印函數以便在紙上生成它。

+0

@GWLlosa謝謝!這工作,我可以打印我的網格,但它看起來像一個截圖。我希望能夠將其格式化爲更友好的外觀。思考? – 2009-02-18 14:40:28

+0

如果您想重新格式化它的外觀,您需要在調用之前重新格式化控件本身,或者在繪製代碼中實際「構建自己的」datagridview,使用行和單元格中的數據來填充它。快速變得凌亂。 – GWLlosa 2009-02-18 15:07:01

8

CodeProject上有項目已經完成了一些打印DataGridViews的工作。

+0

@Bob謝謝!我會嘗試現在執行此... – 2009-02-18 14:41:46

+1

+1是一個很好的資源。 – SoftwareGeek 2010-06-09 15:33:52

1

如果您要打印的不僅僅是DataGridView,那麼更通用的方法可能值得追求。我們使用MigraDoc,然後編寫我們自己的類來讀取DataGridViews並輸出代表表格的MigraDoc類。

有很多很棒的印刷包可用,但我只有MigraDoc的經驗。

編輯:

響應於評論,這裏是我的網站的鏈接表示我用於產生MigraDoc表創建的代碼,並使用它來顯示一個DataGridView(DataGridView to MigraDoc tables)的一個例子。

10

添加一個DataGridView,一個PrintDocuemnt,然後一個按鈕:

button click events { 
    printDocument1.Print(); 
} 

printDocument1_PrintPage events { 
    Bitmap bm = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height); 
    this.dataGridView1.DrawToBitmap(bm, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height)); 
    e.Graphics.DrawImage(bm, 0, 0); 
} 

這就是你的數據打印。

1

我喜歡這種方法http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx但有沒有什麼辦法可以選擇打印機。

我想在流程結束時自動打印。所以選擇這個選項作爲選項1,所以我總是可以打印到默認打印機。另一種選擇喜歡選擇打印機,然後打印。所以共有2個ptint函數。 請回復。 乾杯

4

CodeProject

Another DataGridView Printer by aureolin

上面是一個極好的DataGridView打印機是實現非常簡單。

我意識到我是約翰尼快來到這個線程。我在尋找其他東西的時候偶然發現了這個問題,但是想要以這種方式爲其他人發佈這種優秀的打印解決方案(就像我一樣)。

我希望這裏有人能從中獲得一些用處。