zoukankan      html  css  js  c++  java
  • C#直接调用rdl报表生成报表并打印

           private void Run()
            {
                LocalReport report = new LocalReport();
                report.ReportPath = @"F:\SelfSystemPractice\Report\sqlserverreport\sqlserverreport\Report1.rdl";
                string connstr = @"Data Source=WIN-MT5JMJEOHPK;Initial Catalog=Study;Integrated Security=True";
                SqlConnection conn = new SqlConnection(connstr);
                string sql = "select  usercode,username,address from sys_user";
                SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
                DataSet set = new DataSet();
                adapter.Fill(set);

                ReportDataSource DataSeta = new ReportDataSource("DataSet1", set.Tables[0]);
                report.DataSources.Add(DataSeta);

                Export(report);

                m_currentPageIndex = 0;
                Print();
            }
          private void Export(LocalReport report)
            {
                string deviceInfo =
                  "<DeviceInfo>" +
                  "  <OutputFormat>EMF</OutputFormat>" +
                  //"  <PageWidth>2in</PageWidth>" +
                  //"  <PageHeight>20in</PageHeight>" +
                  //"  <MarginTop>0.25in</MarginTop>" +
                  //"  <MarginLeft>0.25in</MarginLeft>" +
                  //"  <MarginRight>0.25in</MarginRight>" +
                  //"  <MarginBottom>0.25in</MarginBottom>" +
                  "</DeviceInfo>";
                Warning[] warnings;
                m_streams = new List<Stream>();
                report.Render("Image", deviceInfo, CreateStream, out warnings);

                foreach (Stream stream in m_streams)
                    stream.Position = 0;
            }
           private void Print()
            {
                const string printerName =
                  "Microsoft XPS Document Writer";

                if (m_streams == null || m_streams.Count == 0)
                    return;

                PrintDocument printDoc = new PrintDocument();
                printDoc.PrinterSettings.PrinterName = printerName;
                if (!printDoc.PrinterSettings.IsValid)
                {
                    string msg = String.Format("Can't find printer \"{0}\".",
                      printerName);
                    Debug.WriteLine(msg);
                    return;
                }
                printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
                printDoc.Print();
            }
            private void PrintPage(object sender, PrintPageEventArgs ev)
            {
                Metafile pageImage =
                  new Metafile(m_streams[m_currentPageIndex]);
                ev.Graphics.DrawImage(pageImage, 0, 0);

                m_currentPageIndex++;
                ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
            }
           private Stream CreateStream(string name, string fileNameExtension,
              Encoding encoding, string mimeType, bool willSeek)
            {
                Stream stream = new FileStream(name + "." + fileNameExtension,
                  FileMode.Create);
                m_streams.Add(stream);
                return stream;
            }

  • 相关阅读:
    Linux 常用命令总结(二)
    Linux(CentOS7)使用 RPM 安装 mysql 8.0.11
    Linux(CentOS7) 相关软件安装
    8、js——字符串
    7、js——数组
    6、js——创建对象方式
    5、js——this说明
    4、js——函数
    4、js——对象
    2、js编写位置
  • 原文地址:https://www.cnblogs.com/ldqwyl/p/2015472.html
Copyright © 2011-2022 走看看