• 使用 LocalReport 对象进行打印


    1. 从“项目”菜单中,选择“添加引用”。将显示“添加引用”对话框。

    2. 从“.NET”选项卡上显示的列表框中,选择 Winforms 和 Drawing 组件。

    1. 应打开 Program.cs 文件以供编辑。如果未打开,在“解决方案资源管理器”窗口中双击 Program.cs 文件。

    2. 使用以下代码替换 Program.cs 文件中的现有代码。确保使用本地计算机上示例报表的有效路径来替换报表引用。不要向项目添加 Data.xml 和 Report.rdlc。下面以编程方式访问这些文件。

    using System;
    using System.IO;
    using System.Data;
    using System.Text;
    using System.Drawing.Imaging;
    using System.Drawing.Printing;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using Microsoft.Reporting.WinForms;
    
    public class Demo : IDisposable
    {
        private int m_currentPageIndex;
        private IList<Stream> m_streams;
    
        private DataTable LoadSalesData()
        {
            DataSet dataSet = new DataSet();
            dataSet.ReadXml(@"c:My Reportsdata.xml");
            return dataSet.Tables[0];
        }
    
        private Stream CreateStream(string name, 
          string fileNameExtension, Encoding encoding,
          string mimeType, bool willSeek)
        {
        

    //string strPath = @"D:Report";
    //if (System.IO.Directory.Exists(strPath) == false)
    //{
    // System.IO.Directory.CreateDirectory(strPath);
    //}
    //string filenameext = DateTime.Now.Year.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
    //string strFile = strPath + filenameext + name + "." + fileNameExtension;
    //Stream stream = new FileStream(strFile, FileMode.Create);
    //m_streams.Add(stream);
    //return stream;



    Stream stream
    = new FileStream(@"c:My Reports" + name + "." + fileNameExtension, FileMode.Create); m_streams.Add(stream); return stream; } private void Export(LocalReport report) { string deviceInfo = "<DeviceInfo>" + " <OutputFormat>EMF</OutputFormat>" + " <PageWidth>8.5in</PageWidth>" + " <PageHeight>11in</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 PrintPage(object sender, PrintPageEventArgs ev) { Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]); ev.Graphics.DrawImage(pageImage, ev.PageBounds); m_currentPageIndex++; ev.HasMorePages = (m_currentPageIndex < m_streams.Count); } private void Print() {

      

    //if (m_streams == null || m_streams.Count == 0)
    // return;
    //PrintDocument printDoc = new PrintDocument();

    //if (!printDoc.PrinterSettings.IsValid)
    //{
    // string msg = String.Format("Can't find printer "{0}".", "默认打印机!");
    // MessageBox.Show(msg, "找不到默认打印机");
    // return;
    //}
    //printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
    //printDoc.Print();





    const string printerName = "Microsoft Office Document Image 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); MessageBox.Show(msg, "Print Error"); return; } printDoc.PrintPage += new PrintPageEventHandler(PrintPage); printDoc.Print(); } private void Run() { LocalReport report = new LocalReport(); report.ReportPath = @"c:My ReportsReport.rdlc"; report.DataSources.Add(new ReportDataSource("Sales", LoadSalesData())); Export(report); m_currentPageIndex = 0; Print(); } public void Dispose() { if (m_streams != null) { foreach (Stream stream in m_streams) stream.Close(); m_streams = null; } } public static void Main(string[] args) { using (Demo demo = new Demo()) { demo.Run(); } } }

    参考:https://msdn.microsoft.com/zh-cn/library/ms252091(VS.80).aspx

  • 相关阅读:
    iptables防火墙(RHEL6)
    漏洞扫描与网络抓包
    服务安全与监控
    Typecho反序列化漏洞
    python类,魔术方法等学习&&部分ssti常见操作知识点复习加深
    PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox
    [GXYCTF2019]禁止套娃 1 &无参数RCE
    PHP代码审计学习(1)
    Yii2安装完kartik组件后,使用时报错
    收藏博客
  • 原文地址:https://www.cnblogs.com/ChineseMoonGod/p/5505890.html
Copyright © 2020-2023  润新知