我需要的内容是这样的。点击打印出现打印预览,不要用excel预览,因为excel预览内容可以改变,我要的预览只能看,不能改。然后点击打印才打印预览内容,能有打印设置最好。 
哪位高手把源代码贴出来啊,公司急要

解决方案 »

  1.   

    用水晶報表,然後導成pdf檔. protected void btn_Pdf_Click(object sender, EventArgs e)//導pdf代碼
        {
            try
            {
                //記錄打印次數
                  Getsource();//數據綁定
                Response.ClearContent();
                Response.ClearHeaders();
                Response.Clear();
                Response.ContentType = "application/pdf";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Ebook.pdf");
                Stream stream = reportDoc.ExportToStream(ExportFormatType.PortableDocFormat);
                byte[] dataArray = new byte[stream.Length];
                stream.Read(dataArray, 0, Convert.ToInt32(stream.Length));
                Response.BinaryWrite(dataArray);
                Response.Flush();
                Response.Close();
                reportDoc.Close();
                reportDoc.Dispose();
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("文件導出失敗");
                return;        }    }
     
    private void Getsource()//水晶報表綁定數據源
        {
                  reportDoc = new ReportDocument();
                  reportDoc.Load(Server.MapPath("../REPORT/rpt_Wstb.rpt"));
    reportDoc.SetDataSource(SqlHaper.GetDataSet(str_Sql));//  SqlHaper.GetDataSet(str_Sql)這裡是取得一個dataview給數據
                    reportDoc.ParameterFields["z001"].CurrentValues.AddValue(str_Par1);
                    reportDoc.ParameterFields["zd001"].CurrentValues.AddValue(str_creatUser);
                    reportDoc.ParameterFields["z002"].CurrentValues.AddValue(str_Par2);
                    reportDoc.ParameterFields["d1"].CurrentValues.AddValue(str_Par3);
                    reportDoc.ParameterFields["d2"].CurrentValues.AddValue(str_Par4);
                    reportDoc.ParameterFields["s001"].CurrentValues.AddValue(str_Sding);
                    CrystalReportViewer1.ReportSource = reportDoc;
                    CrystalReportViewer1.DataBind();
    }