private async Task ExcelExportAsync(ExcelTableTemplateExporterSettings settings, TableCategoryTreeViewItemViewModel[] categories)
        {
            this.ProgressMessage = string.Format(Resources.Message_ReceivingDataFormat, "(Metadata)");
            var metadata         = this.DataBase.Dispatcher.Invoke(() => this.DataBase.GetMetaData(this.Authentication));
            var tableNames       = GetTableNames(categories);
            var selectedMetaData = SelectedMetaData(metadata, tableNames).ToArray();

            this.ProgressMessage = Resources.Message_ExportingData;

            if (settings.IsSeparable)
            {
                var tableInfos = new Dictionary <string, List <TableInfo> >();
                var keyPaths   = new Dictionary <string, string>();

                if (settings.IsOneTableToOneFile)
                {
                    FillTableInfos(selectedMetaData, ref tableInfos, ref keyPaths, (tableInfo) => tableInfo.TableName, tableInfo => tableInfo.ParentName, item => item.Path);
                }
                else
                {
                    FillTableInfos(selectedMetaData, ref tableInfos, ref keyPaths, (tableInfo) => tableInfo.CategoryPath, tableInfo => tableInfo.CategoryPath, item => item.TableInfo.CategoryPath);
                }

                foreach (var item in tableInfos)
                {
                    await Task.Run(() => ((ITableTemplateExporter)this.SelectedExporter).Export(keyPaths[item.Key], item.Value.ToArray()));
                }
            }
            else
            {
                var tableInfos = selectedMetaData.Select(o => o.TableInfo).ToArray();
                await Task.Run(() => ((ITableTemplateExporter)this.SelectedExporter).Export(null, tableInfos));
            }
        }
示例#2
0
 public TableTemplateExporterViewModel(ICremaAppHost cremaAppHost, IAppConfiguration configs)
 {
     this.cremaAppHost              = cremaAppHost;
     this.configs                   = configs;
     this.settings                  = new ExcelTableTemplateExporterSettings();
     this.settings.PropertyChanged += Settings_PropertyChanged;
     this.configs.Update(this.settings);
 }