• 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;
            }

  • 相关阅读:
    【JAVA基础】强引用、弱引用、软引用、虚引用
    检测手机传感器【Sensor】
    Nginx下搭建flv视频服务器且支持视频拖动进度条播放
    盘点Web开源项目大集合【太全了!!】
    打造属于自己的Notepad++
    魔兽1.20E作弊内存地址全公开
    万能的js复制按钮
    js定时刷新网页
    解决flv格式视频在网页中播放问题
    程序员该如何学习新知识
  • 原文地址:https://www.cnblogs.com/ldqwyl/p/2015472.html
Copyright © 2020-2023  润新知