打印 DataGridView 而不将其转换为位图

Posted

技术标签:

【中文标题】打印 DataGridView 而不将其转换为位图【英文标题】:Printing DataGridView Without converting it to bitmap 【发布时间】:2013-01-25 17:55:06 【问题描述】:

我发现和知道的用于打印 datagridview 的大多数解决方案都是基于将其转换为位图图像,然后将其发送以进行打印。甚至 MSDN 也在说同样的话。

那么我怎样才能打印唯一的内容呢?我必须逐行读取每一行并将它们保存在字符串数组或类似的东西中吗?

编辑: @罗伯特 这个想法很好,但我到底该怎么做呢?

【问题讨论】:

Try me. 这对我不起作用,我之前遇到过 我认为我们需要查看一些代码来提供帮助。 【参考方案1】:

我为类似项目提出的一个解决方案是将数据导出到 Excel 电子表格,让用户可以选择保存文件或稍后打印。不过,我不确定你是否想走那条路,但这是一个选择。

【讨论】:

我虽然也差不多,但我不知道怎么做。 该解决方案不起作用,它会导致错误,它说:对象引用未设置为对象实例 我已经用 2 种不同的方式完成了它,但这里有一个简短的例子来说明我在我的一个项目中是如何做到的。 你能把例子发给我吗? 我已经用 2 种不同的方式完成了它,但这里有一个简短的例子来说明我在我的一个项目中是如何做到的。包括“使用 Excel = Microsoft.Office.Interop.Excel;”在顶部。让我在另一条评论中写几行代码......【参考方案2】:

另一种解决方案是使用 Response.Write 创建输出文件,如下所示:

                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                Response.Buffer = true;
                Response.ContentType = "application/vnd.ms-excel";
                Response.Write(@"<!DOCTYPE html PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">");
                Response.AddHeader("Content-Disposition", "attachment;filename=Reports.xls");
                //sets font
                Response.Write("<font style='font-size:10.0pt; font-family:Calibri;'>");
                Response.Write("<br/><br/><br/>");
Response.Write("<table border='1' bgColor='#ffffff' borderColor='#000000' cellSpacing='0' cellPadding='0' style='font-family:Calibri; background:white;'>");
    ...More output data ...            // Send to save
                Response.Write("</table>");
                Response.Flush();
                Response.End();

【讨论】:

在表格标签之间,以表格格式添加数据,包括行和列。这比第一个示例运行得更快,并且不会在服务器上保存任何文件。

以上是关于打印 DataGridView 而不将其转换为位图的主要内容,如果未能解决你的问题,请参考以下文章

将 GD-Sharp 流转换为位图

2 的十进制数的补码,而不将其转换为二进制形式?

如何将 mp3 转换为带有 n 音频的波形而不将其保存到硬盘?

Java 如何在 dynamodb 中存储 JSON 对象或 JSON 数组而不将其转换为字符串?

将 nmap 输出发送到文件而不将其打印到标准输出

查找 JSON 对象大小而不将其解析为字符串