Exemplo n.º 1
0
        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());
            };
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
        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()
                });
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
        }