100分恳求打印控件和代码

yanele 2010-11-24 09:00:38
打印效果如下图:
http://hi.csdn.net/attachment/201011/24/5550_1290560202dVH5.jpg

说明:
图中红色框线与圈线,以及A区、B区、C区、D区字样非打印要求,是作具体说明所用,曾经用过Delphi开发工具,有一个三方控件QuickReport,很容易实现了上面的效果,现在转C#开发,却不知所措。具体要求:

1、打印的信息,都来源于一个查询界面,主要用于打印240mm×140mm的连式纸张;
2、A区信息作为页头,只需要在第一页打印;
3、B区信息作为表头,需要每页打印,而“页码”处需要根据打印内容与纸张设定的大小,自动设定显示内容。
如:1/3;2/3;3/3(表示当前页/共3页);
4、C区信息为查询界面中dataGridView1里的具体内容,需要对应B区的列标题每页打印,但内容可以设定打印宽度,允许自动换行,或缩小字体显示;
5、D区信息为页尾内容,只需要在最后一页打印,这里有合并三个单元格的“合计”字样与dataGridView1对应列的“合计数据”,其余内容都来自于查询界面的信息;
6、需要直接打印,点击时调出选择打印机窗口再打印;也需要有打印预览窗口,其中也有直接打印的功能。

以上是打印的具体要求,恳求打印控件和代码,分数不够可以再加!!!
...全文
594 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanele 2011-12-24
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 a1060066211 的回复:]
同求啊~~~楼主有好的方法了没,之前我下了一个组件,可以实现上面的打印,但是那个组件的操作都是英文版的~~
[/Quote]

http://download.csdn.net/detail/yanele/3005942

免费版,安装后有Demo,就知道怎么做了.
a1060066211 2011-12-24
  • 打赏
  • 举报
回复
同求啊~~~楼主有好的方法了没,之前我下了一个组件,可以实现上面的打印,但是那个组件的操作都是英文版的~~
yanele 2010-11-27
  • 打赏
  • 举报
回复
试过了,好像只能传SQL查询语句进去,不知道怎么传数据集!!!
yanele 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 foxd 的回复:]
Grid++Report功能强大,最适合国人使用。它本身提供了那么详尽的例子,包括C#、VB、VC等。查看一下相关例子就明白怎么用了。
[/Quote]

我的界面设计就是看那个例子做的,基本成功了。但要把dataGridView1查询出的数据传进去,真没有找到方法。
jiaoqiuge 2010-11-27
  • 打赏
  • 举报
回复
标记学习
foxd 2010-11-27
  • 打赏
  • 举报
回复
Grid++Report功能强大,最适合国人使用。它本身提供了那么详尽的例子,包括C#、VB、VC等。查看一下相关例子就明白怎么用了。
Yalyer 2010-11-27
  • 打赏
  • 举报
回复
using System.IO;
using System.Drawing.Printing;
PrintDocument pd = new PrintDocument();
PrintPreviewDialog ppd = new PrintPreviewDialog();
PrintDialog printDialog = new PrintDialog();
yanele 2010-11-27
  • 打赏
  • 举报
回复
现在是用Grid++Report已经完成打印界面的设计,关键问题是如何将界面中dataGridView1中查询出来的数据传入Grid++Report对应的内容行.
就剩下这一个问题了,希望知道的朋友指点一上。
bu88dong 2010-11-26
  • 打赏
  • 举报
回复
using System.IO;
using System.Drawing.Printing;
PrintDocument pd = new PrintDocument();
PrintPreviewDialog ppd = new PrintPreviewDialog();
PrintDialog printDialog = new PrintDialog();
h0730303779 2010-11-26
  • 打赏
  • 举报
回复
给你段参考 我也是别处转来的 存了好久




//执行打印窗体中的数据操作

private void toolStripButton2_Click(object sender, EventArgs e)
{

printDialog1.ShowDialog(); //设置打印文档
printPreviewDialog1.Document = this.printDocument1;
printPreviewDialog1.ShowDialog();
}

//在窗体中绘制要打印的数据

private void printDocument1_PrintPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
{
//e.Graphics.DrawString(dataGridView1.Columns.ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, 260, 400);

int r = 0;
int c = 20;
for(int i=0;i<dt.Rows.Count;i++)
{

for(int j=0;j<dt.Columns.Count;j++)
{

e.Graphics.DrawString(dt.Rows[i][j].ToString(), new Font("宋体", 10, FontStyle.Regular), Brushes.Black, r, c);
r = r + 60;

}
r = 0;
c += 20;

}
}
huwen7565833 2010-11-26
  • 打赏
  • 举报
回复
可以通过控件进行多项设置,包括设置打纸的页边距,页眉页脚,纸张大小等
http://download.csdn.net/source/2754701
jiningyin 2010-11-26
  • 打赏
  • 举报
回复
我自己封装了一个打印控件,你可以参考一下,加QQ 25524991,我给你演示一下,可以免费用,但不公开代码
foxd 2010-11-26
  • 打赏
  • 举报
回复
Grid++Report
程序海哥 2010-11-26
  • 打赏
  • 举报
回复
水晶报表实现
特别 2010-11-26
  • 打赏
  • 举报
回复
我总觉得纳闷,这玩意用GDI+写一下有多难
唉,等我有时间写个例子上来
hch126163 2010-11-26
  • 打赏
  • 举报
回复
不就是 graphics 对象吗?
http://wenku.baidu.com/view/02e444fb770bf78a652954c5.html

我自己实现的打印类:

支持 打印表格,分页打印!
可以拖动某列单元格的宽度来调整 此列打印的宽度(像word);

支持某列 的字符串长度超过 打印单元格长度时,自动换行打印!整行的高度都增加!

全用的graphics drawLine drawString 2个方法就可以了!

yanele 2010-11-26
  • 打赏
  • 举报
回复
下了一个Grid++Report试了一下,基本能否满足需求,但就是不知道怎么将界面上dataGridView1中查询出来的数据传入Grid++Report对应的内容行,难道不能传给其他数据集给这它吗?

用过的朋友不防帮助一下。
yanele 2010-11-25
  • 打赏
  • 举报
回复
我的数据是从程序界面给定不同的条件,再调用存储过程而来的.
不知道水晶报表该如何来实现上面的要求?

据说水晶报表不便于发布与维护,曾经想研究它,却一直没有找到好的例子,望大家指点一迷津!
yanele 2010-11-25
  • 打赏
  • 举报
回复
问题还没有解决,自己顶一下!
Microblue 2010-11-25
  • 打赏
  • 举报
回复
顶一个~~~
加载更多回复(12)

110,586

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧