|
Не корректно выгружаются данные из эксель |
☑ |
0
bebibo
10.04.20
✎
13:11
|
При чтении файла эксель колонка "ДатаРождения" (с форматом - дата) - читается как строка.
Вот данный код, который читает:
Попытка
Excel = Новый COMОбъект("Excel.Application");
WB = Excel.Workbooks.Open(ПутьКФайлу);
WS = WB.Worksheets(1);
arr = WS.UsedRange.Value;
WB.Close(0);
Исключение
Предупреждение("Внимание! Файл не открыт."+Символы.ПС+"Попробуйте открыть и пересохранить данный файл программой Excel.");
Возврат;
КонецПопытки;
МассивКолонок = arr.Выгрузить();
С чем это может быть связано?
|
|
1
bebibo
10.04.20
✎
13:13
|
(0) получаю так: ДатаРождения =МассивКолонок.Получить(4).Получить(строкаТП);
и эту переменную невозможно преобразовать ни к числу, ни к дате! она строка, хотя в экселе она дата
|
|
2
Делопроизводитель
10.04.20
✎
13:14
|
напиши парсер строки в дату
|
|
3
mikecool
10.04.20
✎
13:17
|
(1) в начале строки нет спец или служебных символов?
|
|
4
bebibo
10.04.20
✎
13:19
|
(3) нет
|
|
5
Делопроизводитель
10.04.20
✎
13:19
|
Функция элВыделитьСловоТочка(ИсходнаяСтрока)
Буфер = СокрЛ(ИсходнаяСтрока);
ПозицияПослПробела = Найти(Буфер, ".");
Если ПозицияПослПробела <2 Тогда
ИсходнаяСтрока = "";
Возврат Буфер;
КонецЕсли;
ВыделенноеСлово = СокрЛП(Лев(Буфер, ПозицияПослПробела-1));
ИсходнаяСтрока = Сред(ИсходнаяСтрока, ПозицияПослПробела + 1);
Возврат ВыделенноеСлово;
КонецФункции
ДатаСтр=ДатаСтр0;
День_Стр=элВыделитьСловоТочка(ДатаСтр);
Месяц_Стр=элВыделитьСловоТочка(ДатаСтр);
Год_Стр=элВыделитьСловоТочка(ДатаСтр);
Если СтрДлина(Год_Стр)>4 Тогда
Если ((КодСимвола(Год_Стр,3)>=48)) и ((КодСимвола(Год_Стр,3)<=57)) тогда
Год_Стр = Лев(Год_Стр,4);
Иначе
Год_Стр = Лев(Год_Стр,2);
Конецесли;
КонецЕсли;
Попытка
День_Числ=Число(День_Стр);
Месяц_Числ=Число(Месяц_Стр);
Год_Числ=Число(Год_Стр);
Если Год_Числ<100 Тогда
Если Год_Числ<15 Тогда
Год_Числ=Год_Числ+2000;
Иначе
Год_Числ=Год_Числ+1900;
КонецЕсли;
КонецЕсли;
ДатаВвода=Дата(Год_Числ,Месяц_Числ,День_Числ,0,0,0);
Исключение
ОшбкаДатыввода=Истина;
КонецПопытки;
|
|
6
bebibo
10.04.20
✎
13:33
|
(5) не понятно как работает код ниже функции
|
|
7
bebibo
10.04.20
✎
13:35
|
(6) вот это что:
ДатаСтр=ДатаСтр;
День_Стр=элВыделитьСловоТочка(ДатаСтр);
Месяц_Стр=элВыделитьСловоТочка(ДатаСтр);
Год_Стр=элВыделитьСловоТочка(ДатаСтр);
|
|
8
Делопроизводитель
10.04.20
✎
13:59
|
(7) разбивание строки по точкам на части.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший