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)); } }
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); }