public static void Group(this JournalExportEventArgs args, IEnumerable <GridColumn> columns, Store store) { if (string.IsNullOrEmpty(store.GroupField)) { return; } var column = columns.FirstOrDefault(r => r.ColumnName == store.GroupField); if (column == null) { return; } var properties = column.ServerMapping.Split('.'); args.GetGroupText = row => { var value = row; for (var i = 0; i < properties.Length && value != null; i++) { var propInfo = TypeDescriptor.GetProperties(value.GetType()); var property = propInfo.Find(properties[i], false); value = property?.GetValue(value); } return(value?.ToString()); }; }
public Stream GetExcelStream(JournalExportEventArgs args) { string docLocation = string.Empty; if (args.ViewJournalUrl != null && args.ViewJournalUrl.Length > 0) { docLocation = args.ViewJournalUrl.ToString(); var startIndex = docLocation.IndexOf("?", StringComparison.Ordinal); var pluginName = startIndex > -1 ? docLocation.Substring(0, startIndex) : docLocation; DBDataContext.AddViewReports( User.GetSID(), HttpContext.Current.User.Identity.Name, HttpContext.Current.User.Identity.Name, docLocation, HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority), Environment.MachineName, true, pluginName, LocalizationHelper.IsCultureKZ ? null : args.Header, LocalizationHelper.IsCultureKZ ? args.Header : null); } var export = new ExporterXslxByArgs(); var stream = export.GetExcel(args); if (args.ExportLog != 0) { args.LogMonitor.Log( args.ExportLog, () => { var message = new StringBuilder(); message.Append(args.Header); if (args.FilterValues != null) { message.Append("; Фильтры: \r\n"); foreach (var value in args.FilterValues) { message.Append(value); message.Append(";\r\n"); } } message.AddHyperLink(docLocation, Resources.SViewJournal, string.Empty); return(new LogMessageEntry(User.GetSID(), args.ExportLog, message.ToString())); }); } return(stream); }
private static void Export(HttpContext context, string queryParameters, IDataSourceView4 dataSourceView, IExportJournal journal, ICollection <string> selectedValues) { if (!dataSourceView.CheckPermit() || !dataSourceView.CheckPermitExport()) { context.Response.StatusCode = 404; context.Response.End(); return; } var data = selectedValues != null && selectedValues.Count > 0 ? dataSourceView.GetSelectIRowByID(queryParameters, selectedValues.ToArray()) : dataSourceView.GetSelectIRow(queryParameters); var log = InitializerSection.GetSection().LogMonitor; log.Init(); var exportData = data.ToList(); journal.Url = new MainPageUrlBuilder("/MainPage.aspx/data/" + journal.TableName + "Journal" + queryParameters); journal.PrepareExportData(exportData); var args = new JournalExportEventArgs { CheckPermit = true, Columns = GridHtmlGenerator.GetColumnsForExport(journal.GetColumns()), FilterValues = journal.GetFilterValues(), Format = "Excel", Header = journal.TableHeader, LogMonitor = log, Control = new AccessControl(dataSourceView.CheckPermitExport), Data = exportData, }; var url = new MainPageUrlBuilder { UserControl = journal.TableName + "Journal", IsDataControl = true, ShowHistory = true, }; args.ViewJournalUrl = new StringBuilder(); url.CreateUrl(args.ViewJournalUrl); args.ViewJournalUrl.Append("?id.EqualsCollection="); var stream = WebSpecificInstances.GetExcelExporter().GetExcelStream(args); PageHelper.DownloadFile(stream, journal.TableHeader + "." + args.FileNameExtention, context.Response); }
public ExportResultArgs GetExcelResult(JournalExportEventArgs args) { try { var export = new ExporterXslxByArgs(); var stream = export.GetExcel(args); if (args.ExportLog != 0) { args.LogMonitor.Log( args.ExportLog, () => { var message = new StringBuilder(); message.Append(args.Header); if (args.FilterValues != null) { message.Append("; Фильтры: \r\n"); foreach (var value in args.FilterValues) { message.Append(value); message.Append(";\r\n"); } } return(new LogMessageEntry(User.GetSID(), args.ExportLog, message.ToString())); }); } return(new ExportResultArgs { Stream = stream }); } catch (Exception e) { return(new ExportResultArgs { Exception = e, ErrorMessage = e.ToString() }); } }
public void ExportDataToXlsx(DataTable table, string reportName) { var exporter = new ExporterXslxByArgs(); var logMonitor = InitializerSection.GetSection().LogMonitor; logMonitor.Init(); exporter.LogMonitor = logMonitor; var args = new JournalExportEventArgs { Header = reportName, CheckPermit = false, Columns = GetColumns(table), Data = table.Rows, FilterValues = new List <string>(), FixedRowsCount = 3, }; using (var stream = exporter.GetExcel(args)) { PageHelper.DownloadFile(stream, reportName + ".xlsx", HttpContext.Current.Response); } }
public static ConfigTotalValues Total(this JournalExportEventArgs args, IEnumerable <GridColumn> columns) { var agg = new AggregateDataSimple(); var configTotalValues = new ConfigTotalValues { Aggregate = agg }; args.ComputeTotalValue = (r, group, column) => { if (configTotalValues.ComputeTotalValue(r, group, column)) { return; } if (!column.IsNumericColumn) { return; } var aggregateType = GetAggType(column as GridColumn); if (aggregateType == ColumnAggregateType.None) { return; } var row = (BaseRow)r; var strValue = column.GetValue(row); if (string.IsNullOrEmpty(strValue)) { return; } var value = Convert.ToDouble(strValue); var groupAgg = agg.GetChildGroup(column.ColumnName); groupAgg.StrValue = column.ColumnName; groupAgg.AggregateType = aggregateType; Aggregate(groupAgg, value); groupAgg = groupAgg.GetChildGroup(group); groupAgg.AggregateType = aggregateType; groupAgg.StrValue = group; Aggregate(groupAgg, value); var rowAgg = groupAgg.GetChildGroup(row.Value); rowAgg.StrValue = strValue; Aggregate(rowAgg, value); rowAgg.Value = value; }; args.GetTotalValue = (group, column, totalRowFilter) => { if (configTotalValues.HasTotalValue(column)) { return(configTotalValues.GetTotalValue(group, column, totalRowFilter)); } if (!column.IsNumericColumn) { return(null); } var gridColumn = (GridHtmlGenerator.Column)column; var value = configTotalValues.GetTotalValue(group, column.ColumnName); return(string.Format(gridColumn.Format ?? "{0}", value)); }; return(configTotalValues); }