private MemoryStream ExportRDLC(BaseDeviceInfoSettings exportTypeSetting, string deviceInfoXml, DataTable _dataSet, out IReportExporter winFormsReportExporter, out LocalReport localReport) { if (_dataSet != null) { this.m_dataSet = _dataSet; } GetColumns(); DateTime startTime = DateTime.Now; localReport = new LocalReport(); localReport.DisplayName = string.IsNullOrEmpty(Rdl.PageHeaderText) ? "Report" : Rdl.PageHeaderText; localReport.LoadReportDefinition(m_rdl); localReport.DataSources.Add(new ReportDataSource("MyData", m_dataSet)); winFormsReportExporter = new WinFormsReportExporter(localReport); MemoryStream content; if (exportTypeSetting is ExcelDeviceInfoSettings) { content = winFormsReportExporter.ExportToXls(deviceInfoXml); } else if (exportTypeSetting is PdfDeviceInfoSettings) { content = winFormsReportExporter.ExportToPdf(deviceInfoXml); } else if (exportTypeSetting is ImageDeviceInfoSettings) { content = winFormsReportExporter.ExportToImage(deviceInfoXml); } else if (exportTypeSetting is WordDeviceInfoSettings) { content = winFormsReportExporter.ExportToWord(deviceInfoXml); } else { throw new ApplicationException("Unknown export type format"); } TimeSpan totalTime = DateTime.Now - startTime; return content; }
public void Print() { HttpContext context = HttpContext.Current; //Warning[] warnings = null; //string[] streamids = null; //string mimeType = null; //string encoding = null; //string extension = null; Warning[] warningArray; HttpResponse response = context.Response; response.StatusCode = 200; MemoryStream lastMemoryStream = null; context.Response.BufferOutput = false; context.Response.ContentType = null; context.Response.Expires = -1; HttpContext.Current.Response.Clear(); GetColumns(); LocalReport localReport = new LocalReport(); localReport.DisplayName = string.IsNullOrEmpty(Rdl.PageHeaderText) ? "Report" : Rdl.PageHeaderText; localReport.LoadReportDefinition(m_rdl); localReport.DataSources.Add(new ReportDataSource("MyData", m_dataSet)); var winFormsReportExporter = new WinFormsReportExporter(localReport); StringBuilder builder = new StringBuilder("<DeviceInfo>"); NameValueCollection requestParameters = context.Request.QueryString; for (int i = 0; i < requestParameters.Count; i++) { if (requestParameters.Keys[i] != null) { if (requestParameters.Keys[i].StartsWith("rc:", StringComparison.OrdinalIgnoreCase)) { builder.AppendFormat("<{0}>{1}</{0}>", XmlConvert.EncodeName(requestParameters.Keys[i].Substring(3)), HttpUtility.HtmlEncode(requestParameters[i])); } } } builder.Append("</DeviceInfo>"); localReport.Render("IMAGE", builder.ToString(), delegate(string name, string extension, Encoding encoding, string mimeType, bool willSeek) { if (!HttpContext.Current.Response.IsClientConnected) { throw new HttpException("Client disconnected"); } if (lastMemoryStream != null) { SendPrintStream(lastMemoryStream, response); lastMemoryStream.Dispose(); lastMemoryStream = null; } lastMemoryStream = new MemoryStream(); return lastMemoryStream; }, out warningArray); SendPrintStream(lastMemoryStream, response); lastMemoryStream.Dispose(); SendPrintStream(null, response); if (!response.BufferOutput) { string a = context.Request.ServerVariables["SERVER_PROTOCOL"]; if (string.Equals(a, "HTTP/1.0", StringComparison.OrdinalIgnoreCase)) { context.Response.Close(); } } }