Exemple #1
0
        private void btnOk_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(_viewModel.ExportExcelFolderPath))
            {
                _viewModel.ExportExcelFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            }

            #region Code

            List <ViewScheduleExtension> viewScheduleExport = new List <ViewScheduleExtension>();
            foreach (ViewScheduleExtension viewSchedule in _viewModel.AllViewSchedules)
            {
                if (viewSchedule.IsExport)
                {
                    viewScheduleExport.Add(viewSchedule);
                }
            }

            if (viewScheduleExport.Count == 0)
            {
                MessageBox.Show("Please select the Schedules which will be exported!");
                return;
            }

            if (_viewModel.IsMultiWorkbooks)
            {
                foreach (var vse in viewScheduleExport)
                {
                    ViewSchedule selectedSchedule = vse.ViewSchedule;
                    string       filePath         = Path.Combine(_viewModel.ExportExcelFolderPath, selectedSchedule.Name + ".xlsx");

                    try
                    {
                        string filePathTxt = Path.Combine(_viewModel.ExportExcelFolderPath,
                                                          string.Concat(selectedSchedule.Name, ".txt"));

                        List <string> scheduleExportFieldName = selectedSchedule.GetNameOfFields();

                        ViewScheduleExportOptions viewScheduleExportOption = new ViewScheduleExportOptions();
                        selectedSchedule.Export(_viewModel.ExportExcelFolderPath, Path.GetFileName(filePathTxt),
                                                viewScheduleExportOption);

                        DataTable dataTable = ExcelUtils.ReadFile(filePathTxt, scheduleExportFieldName.Count);

                        FileInfo existingFile = new FileInfo(filePath);
                        using (var package = new ExcelPackage(existingFile))
                        {
                            ExcelUtils.ExportDataTableToExcel(package, dataTable,
                                                              selectedSchedule.Name, filePath);
                        }

                        File.Delete(filePathTxt);
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            else
            {
                string title = _viewModel.Doc.Title;
                title = title.Substring(0, title.Length - 4);
                string filePath = Path.Combine(_viewModel.ExportExcelFolderPath,
                                               string.Concat(title, ".xlsx"));
                FileInfo existingFile = new FileInfo(filePath);
                using (var package = new ExcelPackage(existingFile))
                {
                    foreach (var vse in viewScheduleExport)
                    {
                        ViewSchedule selectedSchedule = vse.ViewSchedule;
                        try
                        {
                            string filePathTxt = Path.Combine(_viewModel.ExportExcelFolderPath,
                                                              string.Concat(selectedSchedule.Name, ".txt"));

                            List <string> scheduleExportFieldName = selectedSchedule.GetNameOfFields();

                            ViewScheduleExportOptions viewScheduleExportOption = new ViewScheduleExportOptions();
                            selectedSchedule.Export(_viewModel.ExportExcelFolderPath, Path.GetFileName(filePathTxt),
                                                    viewScheduleExportOption);

                            DataTable dataTable = ExcelUtils.ReadFile(filePathTxt, scheduleExportFieldName.Count);

                            ExcelUtils.ExportDataTableToExcel(package, dataTable,
                                                              selectedSchedule.Name, filePath);

                            File.Delete(filePathTxt);
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }

            if (MessageBox.Show("Do you want to open folder that store exported files?", "Open folder",
                                MessageBoxButton.YesNo)
                == MessageBoxResult.Yes)
            {
                try
                {
                    Process.Start(_viewModel.ExportExcelFolderPath);
                }
                catch (Exception)
                {
                }
            }

            #endregion

            DialogResult = true;
            Close();
        }