renderrpt.cs

来自「< SQL Server2005程序设计>」· CS 代码 · 共 168 行

CS
168
字号
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CS_Forms.reportServer;
using CS_Forms.reportExecution;
using System.IO;

namespace CS_Forms
{

    public partial class RenderRpt : Form
    {
        ReportingService2005 rptSrvr = new ReportingService2005();
        ReportExecutionService rptExec = new ReportExecutionService();
        CatalogItem[] catItem;
        String RenderPath = "c:\\";
        String rType = "HTML4.0";
        String rExt = ".HTML";

        public RenderRpt()
        {
            InitializeComponent();
        }

        private void RenderRpt_Load(object sender, EventArgs e)
        {
            rptSrvr.Credentials = System.Net.CredentialCache.DefaultCredentials;
            rptSrvr.Url = "http://localhost/reportserver/reportservice2005.asmx";
            TreeNode topNode = null;
            int topNodeIndex = 0;
            catItem = rptSrvr.ListChildren("/", true);
            foreach (CatalogItem item in catItem)
            {
                TreeNode newNode = new TreeNode(item.Name);
                switch (item.Type)
                {
                    case ItemTypeEnum.DataSource:
                        TreeView1.Indent = 1;
                        break;
                    case ItemTypeEnum.Folder:
                        TreeView1.Indent = 0;
                        topNode = newNode;
                        break;
                    case ItemTypeEnum.LinkedReport:
                        TreeView1.Indent = 1;
                        break;
                    case ItemTypeEnum.Model:
                        TreeView1.Indent = 1;
                        break;
                    case ItemTypeEnum.Report:
                        TreeView1.Indent = 1;
                        break;
                    case ItemTypeEnum.Resource:
                        TreeView1.Indent = 1;
                        break;
                    case ItemTypeEnum.Unknown:
                        TreeView1.Indent = 1;
                        break;
                }
                if (topNode == newNode)
                {
                    topNodeIndex = TreeView1.Nodes.Add(newNode);
                }
                else if (topNode != null)
                {
                    TreeView1.Nodes[topNodeIndex].Nodes.Add(newNode);
                }

            }
            TextBox2.Text = RenderPath;
        }

        private void btnGenerate_Click(object sender, EventArgs e)
        {
            string renderedFile = RenderPath + TextBox1.Text;
            if (CheckBox1.Checked)
            {
                renderedFile += rExt;
            }
            Label2.Text = "";
            if (TextBox1.Text != "" && TreeView1.SelectedNode.Level > 0)
            {
                DateTime ctime = DateTime.Now;
                renderRpt("/" + TreeView1.SelectedNode.FullPath.Replace("\\", "/"),renderedFile,rType);
                //renderRpt("/" & Replace(TreeView1.SelectedNode.FullPath.ToString, "\\", "/"), renderedFile, rType);
                Label2.Text = String.Format("Time to render: {0:0.00} Seconds", (DateTime.Now - ctime).TotalSeconds);
            }
            else if (TextBox1.Text == "")
                Label2.Text = "A file name must be specified";
            else
                Label2.Text = "A report must be selected";

        }
        private void renderRpt(string fullPath, string outputFile, string RenderType)
        {
            rptExec.Credentials = System.Net.CredentialCache.DefaultCredentials;
            rptExec.Url = "http://localhost/reportserver/reportexecution2005.asmx";
            CS_Forms.reportExecution.Warning[] warn;
            string[] streamid;
            string ext = "";
            string mime = "";
            string encode = "";
            ExecutionInfo execInfo = new ExecutionInfo();
            ExecutionHeader execHeader = new ExecutionHeader();

            rptExec.ExecutionHeaderValue = execHeader;

            string SessionId = rptExec.ExecutionHeaderValue.ExecutionID;

            execInfo = rptExec.LoadReport("/chap21" + fullPath, null);

            Byte[] rslt = rptExec.Render(RenderType, "", out ext, out mime, out encode, out warn, out streamid);

            FileStream stream = File.Create(outputFile, rslt.Length);
            stream.Write(rslt, 0, rslt.Length);
            stream.Close();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;
            FolderBrowserDialog1.Description = "Select an output location";
            FolderBrowserDialog1.ShowDialog();
            RenderPath = FolderBrowserDialog1.SelectedPath.ToString();
            TextBox2.Text = RenderPath;

        }

        private void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton Rbutton = (RadioButton)sender;
            if (Rbutton.Checked)
            {
                switch (Rbutton.Text.ToUpper())
                {
                    case "HTML":
                        rType = "HTML4.0";
                        rExt = ".HTML";
                        break;
                    case "EXCEL":
                        rType = "Excel";
                        rExt = ".XLS";
                        break;
                    case "PDF":
                        rType = "PDF";
                        rExt = ".PDF";
                        break;
                    case "XML":
                        rType = "XML";
                        rExt = ".XML";
                        break;
                    case "CSV":
                        rType = "CSV";
                        rExt = ".CSV";
                        break;
                    case "IMAGE":
                        rType = "IMAGE";
                        rExt = ".TIFF";
                        break;
                }
            }
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?