水晶报表直接打印是不行的,它的打印只适合在服务器端打印,作为客户端页面应该把水晶报表生成word、pdf等其他文档才能在客户端打印。
下面函数实现了导出pdf或word文件并在ie中显示,其中CryReport是我做的水晶报表文件名,string OptionStr是操作字符,可选"Portable Document (PDF)"和"MS Word (DOC)"
pdf和word在ie中有自带打印功能调用方式为ExportReport(水晶报表实例,操作字符)private void ExportReport(CryReport Report,string OptionStr)
{

string ExportPath;
ExportPath = Request.PhysicalApplicationPath + "Exported\\";
if (Directory.Exists(ExportPath) == false) Directory.CreateDirectory(Request.PhysicalApplicationPath + "Exported\\");    
ReportDocument crReportDocument = (ReportDocument)Report;
DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();
ExportOptions crExportOptions = crReportDocument.ExportOptions; switch(OptionStr)
{
case "Portable Document (PDF)":
crDiskFileDestinationOptions.DiskFileName = ExportPath + "PortableDoc.pdf";
crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
break;
case "MS Word (DOC)":
crDiskFileDestinationOptions.DiskFileName = ExportPath + "Word.doc";
crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
crExportOptions.ExportFormatType = ExportFormatType.WordForWindows;
crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
break;
}

try
{
// Export the report
crReportDocument.Export();
crReportDocument.Close();
Response.ClearContent();
Response.ClearHeaders();
switch(OptionStr)
{
case "Portable Document (PDF)":
Response.ContentType="application/pdf";
Response.WriteFile(ExportPath + "PortableDoc.pdf");
break;
case "MS Word (DOC)": Response.ContentType="application/msword";
Response.WriteFile(ExportPath + "Word.doc");
break;
}  Response.Flush();
Response.Close();
}
catch (Exception err)
{
Response.Write("<BR>");
Response.Write(err.Message.ToString());
}
}