private void GenerateReport_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "Excel file (*.xlsx)|*.xlsx";
            if (sfd.ShowDialog() == true)
            {
                try
                {
                    DateTime?date = null;
                    if ((DateTime?)SelectDate.SelectedDate == null)
                    {
                        date = DateTime.Now.Date;
                    }
                    else
                    {
                        date = (DateTime?)SelectDate.SelectedDate.Value.Date;
                    }
                    XlsxExport.ExportDailyReport(sfd, date);
                }
                catch (Exception ex)
                {
                    string           msg = "Выбранный файл недоступен: " + ex.Message + "/r/nПожалуйста, повторите сохранение, задав другое имя файла.";
                    MessageBoxResult res = MessageBox.Show(msg, "Информация", MessageBoxButton.OK);
                }
            }
        }
Esempio n. 2
0
        public async Task <HttpResponseMessage> ExportToXlsxAsync([FromBody] XlsxExport export)
        {
            // ignore paging (set it to null), ignore includes (set it to null)
            QueryInfo = new QueryInfo(QueryInfo?.SortProperties, QueryInfo?.Filters);
            var queryResult = await GetManyAsync();

            return(queryResult.Data.DeliverAsXlsxAsync(export, XlsxTitle));
        }
 private void GenerateReportPeriod_Click(object sender, RoutedEventArgs e)
 {
     if (SelectDateFrom.SelectedDate != null && SelectDateTo.SelectedDate != null)
     {
         var from = SelectDateFrom.SelectedDate;
         var to   = SelectDateTo.SelectedDate;
         try
         {
             SaveFileDialog sfd = new SaveFileDialog();
             sfd.Filter = "Excel file (*.xlsx)|*.xlsx";
             if (sfd.ShowDialog() == true)
             {
                 XlsxExport.ExportDailyReport(sfd, from, to);
             }
         }
         catch (Exception ex) {
             int point = 0;
         }
     }
 }
        /// <summary>
        /// Converts the collection to an Xlsx-file and returns a <see cref="HttpResponseMessage"/> that delivers the file.
        /// </summary>
        /// <typeparam name="T">The type of model that is contained in the collection</typeparam>
        /// <param name="data">A collection that should be converted.</param>
        /// <param name="export">Meta-data for the generation of the Xlsx-file. See <see cref="XlsxExport"/>.</param>
        /// <param name="title">The title used for the xlsx export (represented in table-/range-names and the file name).</param>
        /// <returns>A <see cref="HttpResponseMessage"/> containing a file result that contains the converted Xlsx-file.</returns>
        public static HttpResponseMessage DeliverAsXlsxAsync <T>(
            [NotNull, ItemNotNull] this T[] data,
            [NotNull] XlsxExport export,
            [NotNull] string title)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (data.Any(x => x == null))
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (export == null)
            {
                throw new ArgumentNullException(nameof(export));
            }
            if (title == null)
            {
                throw new ArgumentNullException(nameof(title));
            }

            var validator = new Validator();

            ModelValidators.GetValidator <XlsxExport>().Validate(export, validator);
            validator.ThrowIfHasErrors();

            try
            {
                return(data.ToXlsx(export, title).Deliver($"Export_{title}_{DateTime.Now:yyyy-MM-ddTHH-mm-ss}.xlsx"));
            }
            catch (CreateTableException e)
            {
                throw new ApiErrorException(e, new ApiParameterError(e.ParameterPath, e.Message));
            }
        }
        /// <summary>
        /// Converts the collection to an Xlsx-file and returns a <see cref="HttpResponseMessage"/> that delivers the file.
        /// </summary>
        /// <typeparam name="T">The type of model that is contained in the collection</typeparam>
        /// <param name="data">A collection that should be converted.</param>
        /// <param name="export">Meta-data for the generation of the Xlsx-file. See <see cref="XlsxExport"/>.</param>
        /// <param name="title">The title used for the xlsx export (represented in table-/range-names and the file name).</param>
        /// <param name="validator">A validator that can be used to validate parameters and constraints.</param>
        /// <returns>A <see cref="HttpResponseMessage"/> containing a file result that contains the converted Xlsx-file.</returns>
        public static HttpResponseMessage DeliverAsXlsxAsync <T>(
            [NotNull, ItemNotNull] this T[] data,
            [NotNull] XlsxExport export,
            [NotNull] string title,
            [NotNull] ValidatorBase validator)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (data.Any(x => x == null))
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (export == null)
            {
                throw new ArgumentNullException(nameof(export));
            }
            if (title == null)
            {
                throw new ArgumentNullException(nameof(title));
            }
            if (validator == null)
            {
                throw new ArgumentNullException(nameof(validator));
            }

            ModelValidators.GetValidator <XlsxExport>().Validate(export, validator);
            validator.ThrowIfHasErrors();

            try
            {
                var workbook = data.ToXlsx(export, title);

                var memoryStream = new MemoryStream();
                try
                {
                    workbook.SaveAs(memoryStream);
                    memoryStream.Seek(0, SeekOrigin.Begin);

                    var message = new HttpResponseMessage(HttpStatusCode.OK)
                    {
                        Content = new StreamContent(memoryStream)
                    };
                    message.Content.Headers.ContentType        = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                    message.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = $"Export_{title}_{DateTime.Now:yyyy-MM-ddTHH-mm-ss}.xlsx"
                    };

                    return(message);
                }
                catch
                {
                    try { memoryStream.Dispose(); } catch { /* ignored */ }
                    throw;
                }
            }
            catch (CreateTableException e)
            {
                throw new ApiErrorException(e, new ApiParameterError(e.ParameterPath, e.Message));
            }
        }