2009-02-18 83 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打印机是实现非常简单。

我意识到我是约翰尼快来到这个线程。我在寻找其他东西的时候偶然发现了这个问题,但是想要以这种方式为其他人发布这种优秀的打印解决方案(就像我一样)。

我希望这里有人能从中获得一些用处。