/// <summary> /// 导出报表内容到文件 /// </summary> /// <param name="exportTypeSetting"></param> /// <param name="deviceInfoXml"></param> /// <param name="_dataSet"></param> /// <param name="path"></param> /// <returns></returns> public string ExportToFile(BaseDeviceInfoSettings exportTypeSetting, string deviceInfoXml, DataTable _dataSet, string path) { IReportExporter winFormsReportExporter; LocalReport localReport; MemoryStream content = ExportRDLC(exportTypeSetting, deviceInfoXml, _dataSet, out winFormsReportExporter, out localReport); string fileExtension = winFormsReportExporter.Extension; string fileFullPath = path + "\\" + localReport.DisplayName + "." + fileExtension; if (Directory.Exists(fileFullPath)) { File.Delete(fileFullPath); } File.WriteAllBytes(fileFullPath, content.ToArray()); return fileFullPath; }
public void ExportToResponse(BaseDeviceInfoSettings exportTypeSetting, DataTable _dataSet) { ExportToResponse(exportTypeSetting, null, _dataSet); }
private MemoryStream ExportRDLC(BaseDeviceInfoSettings exportTypeSetting, string deviceInfoXml, out IReportExporter winFormsReportExporter, out LocalReport localReport) { return ExportRDLC(exportTypeSetting, deviceInfoXml, null, out winFormsReportExporter, out localReport); }
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; }
/// <summary> /// 导出报表内容直接在Respons输出到客户端 /// </summary> /// <param name="exportTypeSetting"></param> /// <param name="deviceInfoXml"></param> /// <param name="_dataSet"></param> /// <param name="response"></param> public void ExportToResponse(BaseDeviceInfoSettings exportTypeSetting, string deviceInfoXml, DataTable _dataSet) { IReportExporter winFormsReportExporter; LocalReport localReport; MemoryStream content = ExportRDLC(exportTypeSetting, deviceInfoXml, _dataSet, out winFormsReportExporter, out localReport); string fileExtension = winFormsReportExporter.Extension; //HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpResponse response = HttpContext.Current.Response; HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/octet-stream"; response.AppendHeader("Content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(localReport.DisplayName + "." + fileExtension)); StreamToResponse(content, winFormsReportExporter.MimeType, response); response.Flush(); }