public Import(Creator phrasesCreator, xlsSheetType xlsSheetType) { _phrasesCreator = phrasesCreator; _preImportChecksResult = preImportChecks((int)xlsSheetType); }
/// <summary> /// Формирует модель данных /// </summary> /// <param name="screenModel">Модель данных</param> /// <param name="message">Сообщение о статусе операции</param> /// <returns>Статус операции</returns> public virtual bool Do(ref ScreenModel screenModel, out string message) { if (_preImportChecksResult == false) { message = "Не пройдена проверка файла signals"; return(false); } try { message = string.Empty; int rowIndex = 0; int screenItemOrdenNumber = 0; // изменяется на 1 при каждой новой фразе (в соответсвие фразе приводится screenItem) //читать книгу, пока есть что читать while (_sh.GetRow(rowIndex) != null) { //считать строку var row = _sh.GetRow(rowIndex); //считывает каждую из 4 ячеек (колонка в строке) var cell_1 = row.GetCell(0); var screenItem_cell_1 = new ScreenItem(); var cell_2 = row.GetCell(1); var screenItem_cell_2 = new ScreenItem(); var cell_3 = row.GetCell(2); var screenItem_cell_3 = new ScreenItem(); var cell_4 = row.GetCell(3); //дополнительная проверка на пустую строку для выхода из цикла if ((cell_1 == null || string.IsNullOrWhiteSpace(cell_1.StringCellValue)) && (cell_2 == null || string.IsNullOrWhiteSpace(cell_2.StringCellValue)) && (cell_3 == null || string.IsNullOrWhiteSpace(cell_3.StringCellValue)) && (cell_4 == null || string.IsNullOrWhiteSpace(cell_4.StringCellValue))) { break; } //проверка на заполненность первой ячейки if (rowIndex == 0) { if (cell_1 == null) { message = "Некорректно заполнена таблица с данными."; return(false); } } rowIndex++; #region Проверка 1 ячейки if (cell_1 != null && !string.IsNullOrWhiteSpace(cell_1.StringCellValue)) { //считываем фразу из 1 колонки IncrementOrderNumberFor(screenItem: ref screenItem_cell_1, currentOrderNumber: ref screenItemOrdenNumber); var phrase = new Phrase() { Value = cell_1.StringCellValue }; bool isText_RU = Creator.Check_isText_RU(phrase.Value); _phrasesCreator.CreateKey(ref phrase, isText_RU); screenItem_cell_1.Phrase = phrase; } else { screenItem_cell_1 = null; } #endregion #region Проверка 2 ячейки if (cell_2 != null && !string.IsNullOrWhiteSpace(cell_2.StringCellValue)) { //считываем фразу из 2 колонки IncrementOrderNumberFor(screenItem: ref screenItem_cell_2, currentOrderNumber: ref screenItemOrdenNumber); var phrase = new Phrase() { Value = cell_2.StringCellValue }; bool isText_RU = Creator.Check_isText_RU(phrase.Value); _phrasesCreator.CreateKey(ref phrase, isText_RU); screenItem_cell_2.Phrase = phrase; if (cell_1 != null && !string.IsNullOrWhiteSpace(cell_1.StringCellValue)) { screenItem_cell_1.CompositionType = CompositionType.TableHeader; } } else { screenItem_cell_2 = null; if (cell_1 != null && !string.IsNullOrWhiteSpace(cell_1.StringCellValue)) { screenItem_cell_1.CompositionType = CompositionType.ElementOfOTHERTable; screenItem_cell_1.Specific_InOut_Notation = cell_4.StringCellValue; } //получилось, что ячейка соответствует "current for proportional solenoid valve1" из Примера данных } #endregion #region Проверка 3 ячейки if (cell_3 != null && !string.IsNullOrWhiteSpace(cell_3.StringCellValue)) { //считываем фразу из 3 колонки IncrementOrderNumberFor(screenItem: ref screenItem_cell_3, currentOrderNumber: ref screenItemOrdenNumber); var phrase = new Phrase() { Value = cell_3.StringCellValue }; bool isText_RU = Creator.Check_isText_RU(phrase.Value); _phrasesCreator.CreateKey(ref phrase, isText_RU); screenItem_cell_3.CompositionType = CompositionType.AccordingToOutputValue; screenItem_cell_3.Phrase = phrase; screenItem_cell_3.Specific_InOut_Notation = cell_4.StringCellValue; if (cell_2 != null && !string.IsNullOrWhiteSpace(cell_2.StringCellValue)) { screenItem_cell_2.CompositionType = CompositionType.SubTableHeader; } } else { screenItem_cell_3 = null; if (cell_2 != null && !string.IsNullOrWhiteSpace(cell_2.StringCellValue)) { screenItem_cell_2.CompositionType = CompositionType.AccordingToOutputValue; screenItem_cell_2.Specific_InOut_Notation = cell_4.StringCellValue; } } #endregion if (screenItem_cell_1 != null) { screenModel.ScreenItems.Add(screenItem_cell_1); } if (screenItem_cell_2 != null) { screenModel.ScreenItems.Add(screenItem_cell_2); } if (screenItem_cell_3 != null) { screenModel.ScreenItems.Add(screenItem_cell_3); } } screenModel.ScreenItems.RemoveAll(x => string.IsNullOrWhiteSpace(x.Phrase.Value)); return(true); } catch (Exception ex) { message = string.Concat("Exception: ", ex.ToString()); return(false); } }
public Import(string pathToExl, Creator phrasesCreator, xlsSheetType xlsSheetType) { _path = pathToExl; _phrasesCreator = phrasesCreator; _preImportChecksResult = preImportChecks((int)xlsSheetType); }