public static Type GetAttributeType(this GM_NSIReferenceAttribute attributeType) { switch ((NSIDataTypes)attributeType.ReferenceAttributeType) { case NSIDataTypes.String: return(typeof(string)); case NSIDataTypes.Integer: return(typeof(int)); case NSIDataTypes.Real: return(typeof(decimal)); case NSIDataTypes.DateTime: return(typeof(DateTime)); case NSIDataTypes.ReferenceRecord: return(typeof(GM_NSIReferenceRecord)); default: throw new ArgumentOutOfRangeException(); } }
public void Execute(object parameter) { HourGlass.Enable = true; TableView view = parameter as TableView; if (view == null) { return; } MainViewModel mainViewModel = view.DataContext as MainViewModel; OpenFileDialog openFileDialog = new OpenFileDialog { DefaultExt = ".xlsx", InitialDirectory = @"C:\", Filter = "excel file (*.xlsx)|*.xlsx" }; if (openFileDialog.ShowDialog() == true) { SplashScreenManager.ShowForm(typeof(frmWaitForm), true, true); SplashScreenManager.Default.SetWaitFormCaption("Импортирую..."); var excelApp = new Application(); var workbook = excelApp.Workbooks.Open(openFileDialog.FileName); worksheet = (Worksheet)excelApp.ActiveSheet; try { //last row,column excel SplashScreenManager.Default.SetWaitFormDescription("Определение данных в таблице"); var lastRow = excelApp.Cells.SpecialCells(XlCellType.xlCellTypeLastCell).Row; var lastColumn = excelApp.Cells.SpecialCells(XlCellType.xlCellTypeLastCell).Column; for (int i = lastColumn; i >= 1; i--) { if (GetValueExcel(7, i) == "") { lastColumn--; } else { break; } } // блок атрибутов справочника ObservableCollection <GM_NSIReferenceAttribute> listAttributes = new ObservableCollection <GM_NSIReferenceAttribute>(); for (int i = 3; i <= lastColumn; i++) { GM_NSIReferenceAttribute attribute = new GM_NSIReferenceAttribute(); attribute.ReferenceAttributeId = GetValueExcel(6, i); attribute.ReferenceAttributeName = GetValueExcel(7, i); attribute.ReferenceAttributeType = Convertation(GetValueExcel(8, i)); if (Convertation(GetValueExcel(8, i)) == 4) { attribute.RefReferenceId = GetValueExcel(6, i); } listAttributes.Add(attribute); } //Таблица с данными SplashScreenManager.Default.SetWaitFormDescription("Импорт таблицы"); ObservableCollection <DynamicListItem> Records = new ObservableCollection <DynamicListItem>(); for (int i = 9; i <= lastRow; i++) { DynamicListItem rowItem = new DynamicListItem(); for (int j = 1; j <= lastColumn; j++) { rowItem.ValueDictionary.Add(GetValueExcel(7, j), GetValueExcel(i, j)); } Records.Add(rowItem); } SplashScreenManager.Default.SetWaitFormDescription("Настраиваю вьюху"); ObservableCollection <ColumnEx> Columns = new ObservableCollection <ColumnEx>(); for (int j = 1; j <= lastColumn; j++) { ColumnEx CE = new ColumnEx(); CE.CellSource = GetValueExcel(7, j); CE.Header = GetValueExcel(7, j); CE.Type = 0; Columns.Add(CE); } GM_NSIReference selectedNsi = new GM_NSIReference(); selectedNsi.ReferenceId = GetValueExcel(1, 2); selectedNsi.ReferenceName = GetValueExcel(2, 2); selectedNsi.ReferenceGroupId = GetValueExcel(3, 2); selectedNsi.UserGroupId = GetValueExcel(4, 2); mainViewModel.isExcel = true; mainViewModel.ignoreNsiUpdate = true; mainViewModel.SelectedNsi = selectedNsi; mainViewModel.ReferenceAttributeCollection = listAttributes; mainViewModel.Columns = Columns; mainViewModel.Records = Records; mainViewModel.RunExportButtonEnabled = true; mainViewModel.ExportSQL = false; // view.DataContext = mainViewModel; } catch (Exception e) { MessageBox.Show("ЧТо то пошло не так!" + e); } finally { SplashScreenManager.CloseForm(); mainViewModel.ignoreNsiUpdate = false; HourGlass.Enable = false; workbook.Close(); excelApp.Quit(); } } }
public static void ReferenceAttributeCache_QueryAttributeInfo(object sender, NSIAttributeEventArgs e) { GM_NSIReferenceAttribute attribute = GetAttribute(e.ReferenceID, e.AttributeID); e.NSIAttributeInfo = new NSIAttributeInfo(attribute.RecId, attribute.ReferenceAttributeType, attribute.RefReferenceId); }