/// <summary> /// Exports the query results to an excel file per query. /// </summary> /// <param name="viewType">Indicates the type of response view.</param> /// <returns></returns> public Stream ExportAsExcel(TaskItemTypes viewType) { MemoryStream ms = new MemoryStream(); var includeDataMartName = viewType != TaskItemTypes.AggregateResponse; if (Queries.Count() > 1) { var zipStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(ms); zipStream.IsStreamOwner = false; foreach (var grouping in Queries) { var datamartAcronym = includeDataMartName ? "-" + grouping.Select(g => g.DataMartAcronym).FirstOrDefault() : string.Empty; string zipEntryFilename = Path.ChangeExtension(CleanFilename(grouping.Key.QueryName + datamartAcronym), "xlsx"); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(zipEntryFilename); zipEntry.DateTime = DateTime.Now; zipStream.PutNextEntry(zipEntry); WriteExcel(zipStream, grouping.AsEnumerable(), includeDataMartName); zipStream.CloseEntry(); } zipStream.Close(); } else { WriteExcel(ms, Queries.ElementAt(0).ToArray(), includeDataMartName); } ms.Position = 0; return(ms); }
/// <summary> /// Exports the responses in csv format, if the response is multi-query each query response will be a separate csv file zipped into a file of the request name. /// </summary> /// <param name="viewType">The response result view type, Individual or Aggregate.</param> /// <returns></returns> public Stream ExportAsCSV(TaskItemTypes viewType) { var queries = Queries.ToArray(); var includeDataMartName = viewType != TaskItemTypes.AggregateResponse; MemoryStream ms = new MemoryStream(); if (queries.Count() > 1) { var zipStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(ms); zipStream.IsStreamOwner = false; foreach (var grouping in Queries) { var datamartAcronym = includeDataMartName ? "-" + grouping.Select(g => g.DataMartAcronym).FirstOrDefault() : string.Empty; string zipEntryFilename = Path.ChangeExtension(CleanFilename(grouping.Key.QueryName + datamartAcronym), "csv"); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(zipEntryFilename); zipEntry.DateTime = DateTime.Now; zipStream.PutNextEntry(zipEntry); using (var writer = new StreamWriter(zipStream, System.Text.Encoding.Default, 1024, true)) { for (int i = 0; i < grouping.Count(); i++) { var responseResult = grouping.ElementAt(i); WriteCSV(writer, responseResult, i == 0, includeDataMartName); } writer.Flush(); zipStream.CloseEntry(); } } zipStream.Close(); } else { var firstQueryGrouping = Queries.ElementAt(0).ToArray(); using (var writer = new StreamWriter(ms, System.Text.Encoding.Default, 1024, true)) { for (int i = 0; i < firstQueryGrouping.Length; i++) { WriteCSV(writer, firstQueryGrouping[i], i == 0, includeDataMartName); } writer.Flush(); } } ms.Position = 0; return(ms); }