我的程序是B/S结构的,用的是VS2005 C#自带的水晶报表,谁知道CrystalReportViewer自带的打印按钮的事件是怎么写的吗?先谢谢了!分不够可以再加!
解决方案 »
- 【求助】在winform项目中把datatable中数据导出到dbf文件
- -_-! adapter.fill 默认排序不正确??▲▲
- 有谁实实在在做过P2P的UDP打洞的?
- 高手请进。。。绝对有难度的问题。。
- 我做的快照只能手动对它进行刷新,请问如何让它自动刷新
- 关于DataGridr 的一个小问题,恳请各位英雄豪杰拔刀相助!
- 菜鸟想问如何在一个while语句里,让这个while语句间隔100毫秒执行一次。在这个时间间隔里不占用cpu
- DataGrid的删除一条记录的事件执行两次???
- 如何对依此输入的4个数字进行比较(使用Console.ReadLine),求出最大直和最小值
- 一个关于DateGrid的问题
- 怎样用母版页实现框架结构效果呢?
- 还是DataGridView中数据格式的问题。。。。
水晶报表查看器CrystalReportViewer自带打印功能,调用当前系统默认打印机进行打印,但.NET里的水晶版本不支持Web打印,需要水晶报表10以上的版本才支持。另外由于其他原因,我们大多需要自己写代码进行打印,这就牵扯到如何写代码、如何设置打印参数的问题,以下是一些基本知识:
打印的基本代码:CrystalReport1 report = new CrystalReport1(); //Report为你自己的报表名
PageMargins margins;
margins = Report.PrintOptions.PageMargins;
margins.bottomMargin = 250;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;
// Apply the page margins.
Report.PrintOptions.ApplyPageMargins(margins);// Select the printer.
string printerName = "\\\\局域网机器名\\打印机名(例如HP 2100)"; //本地打印机直接指定名称
Report.PrintOptions.PrinterName = printerName; //指定打印机名称
Report.PrintOptions.PaperSize = PaperSize.PaperA4; //指定纸张尺寸report.PrintToPrinter(1, true, 1, 4);下面简单就打印中的参数进行说明:PrintOptions类,提供用于设置报表打印选项的属性和方法。PrintOptions成员:
PageContentHeight---Int32,获取页面内容的高度
PageContentWidth---Int32,获取页面内容的宽度
PageMargins---获取报表的边距
PageOrientation---获取或设置打印机纸张方向
Pagesize---获取或设置当前打印机纸张的大小
PrinterName---字符串,获取或设置报表所使用的打印机名称 ReportDocument.PrintToPrinter方法
public virtual void PrintToPrinter( int nCopies, bool collated, int startPageN, int endPageN )
nCopies 指明要打印的分数
collated 指明是否逐份打印
startPageN 指明要打印的第一页
endPageN 指明要打印的最后一页
{
customerReport = new ReportDocument();
string reportPath = Server.MapPath("CrystalReport2.rpt");
customerReport.Load(reportPath); //组织数据源dataSet..... customerReport.SetDataSource(dataSet);
CrystalReportViewer1.ReportSource = customerReport;
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
} protected void btnPrint_Click(object sender, System.EventArgs e)
{
// 设置打印页边距
PageMargins margins;
margins = customerReport.PrintOptions.PageMargins;
margins.bottomMargin = 250;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 450;
customerReport.PrintOptions.ApplyPageMargins(margins);
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
customerReport.PrintToPrinter(1, false, 0, 0);
}
在服务器端生成生晶报表后将它转化文件流形成一个PDF文件送到客户端,在客户端打印这个文件
拙见,
其实要是一次打印多个数据源,一般情况都是多个数据表。
最好使用Excel来处理,一个sheet页一个报表。
http://blog.csdn.net/lanwilliam/archive/2008/03/10/2163156.aspx
可以考虑用我封的类,里面还有些别的方法。
当然水晶报表也可以,只不过没试过。