|
v7: Не могу получить дату из екселя в йоксель | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
21.06.12
✎
14:59
|
Здравствуйте. В экселе дата - 14.05.2012 12:17 (формат ячейки ММ.ДД.ГГГГ ч:мм), при считывании значения этой даты (обл.Текст) возвращается вот такое значение: 41043.512257.
А мне нужно получить дату, НЕ залазия в эксель, и не исправляя формат ячейки. Что значат эти цифры? Я думал кол секунд, но нет... |
|||
1
andrewks
21.06.12
✎
15:08
|
||||
2
andrewks
21.06.12
✎
15:12
|
а что возвращает value?
|
|||
3
Zhuravlik
21.06.12
✎
15:56
|
(2) Я загружай файл Йокселем, там нет такого метода.
|
|||
4
Zhuravlik
21.06.12
✎
16:12
|
http://www.planetaexcel.ru/tip.php?aid=127
"На самом деле любую дату Excel хранит и обрабатывает именно так - как число с целой и дробной частью. Целая часть числа (38998) - это количество дней, прошедших с 1 января 1900 года (взято за точку отсчета) до текущей даты. А дробная часть (0,65417), соответственно, доля от суток (1сутки = 1,0) Из всех этих фактов следуют два чисто практических вывода: Во-первых, Excel не умеет работать (без дополнительных настроек) с датами ранее 1 января 1900 года. Но это мы переживем! ;) Во-вторых, с датами и временем в Excel возможно выполнять любые математические операции. Именно потому, что на самом деле они - числа! А вот это уже раскрывает перед пользователем массу возможностей." Жаль, жаль... что нельзя прочесть готовую дату( И когда я к 1 января 1900 прибавляю целую часть числа, у меня не экселевское значение для даты, то + день, то минус 2 дня.... |
|||
5
antoneus
21.06.12
✎
16:13
|
На демоконфе Йокселя попробовал - всё ок грузит.
|
|||
6
Mikeware
21.06.12
✎
16:20
|
(3) Есть. У области.
Даты грузит нормально. |
|||
7
Zhuravlik
21.06.12
✎
16:34
|
(5) Что именно грузит?? Я загружаю в 1С файл экселя, где дата+время представлена числом миллисекунд. Как ее увидеть в 1С?
(6) Есть "Значение", которое возвращает то же самое, что и показывает мне фрейм, когда ф вывожу на просмотр таблицу, закгруженную из конвертора. То есть число с дробью, а не строку где дата _пробел_ время. |
|||
8
Ёпрст
21.06.12
✎
16:35
|
(7) в экселе выстави, что тип ячейки текст и грузи в 1с как текст
|
|||
9
antoneus
21.06.12
✎
16:39
|
(7) Формат ячейки Excel - дата, ДД.ММ.ГГГГ ЧЧ:ММ.
Йоксель.КонвертерВТаблицуЗначений, грузит дату в таблицу значений, в отладчике ТипЗначенияСтр(ТЗ.ПолучитьЗначение(1,1))="Дата". |
|||
10
Zhuravlik
21.06.12
✎
16:41
|
(8) Грузить будет бухгалтер. Я не хочу чтобы он там случайно где-нибудь нажал пробел, или удалил ячейку.
(9) А время? Время тоже нужно... А можно в 1С как-нибудь программно пересохранить файл экселя в csv? Не хочу, чтобы бухи даже просто открывали файл перед выгрузкой. |
|||
11
Zhuravlik
21.06.12
✎
16:43
|
(9) хотя время можно будет потом пересчитать из дробной части... спасибо, сейчас попробую еще раз.
|
|||
12
Zhuravlik
21.06.12
✎
16:50
|
(9) Нет, выходит тз с такой же бедой... Вместо даты - число с дробью.
|
|||
13
Ёпрст
21.06.12
✎
16:51
|
пробуй в конвертере отключить распознавание числовых ячеек
|
|||
14
Zhuravlik
21.06.12
✎
16:55
|
(13) Конвертер.Открыть(ИмяФайла) возвращает КнигуЗагрузчика, а как получить книгу конвертера?
|
|||
15
Zhuravlik
21.06.12
✎
16:58
|
(14) А, все, нашел..
|
|||
16
Zhuravlik
21.06.12
✎
17:06
|
(13) то же самое
|
|||
17
Ёпрст
21.06.12
✎
17:06
|
а как в (8) хоть работает ?
|
|||
18
Zhuravlik
21.06.12
✎
17:12
|
(17) не пробовал, но сработает судя по тому, что если я сохраняю в csv - все нормально. Теперь нужно найти способ как программно сохранить файл екселя в csv.
|
|||
19
Mikeware
21.06.12
✎
17:33
|
(18) ADO. Или DTS
|
|||
20
Zhuravlik
22.06.12
✎
11:26
|
Решил))
прИмяВремФайла = "D:\1.txt"; Попытка НачатьТранзакцию(); Эксель = СоздатьОбъект("Excel.Application"); Книга = Эксель.Workbooks.Open(СокрЛП(фрАдресФайла)); Лист = Книга.Worksheets("Лист1"); Эксель.DisplayAlerts = 0; Книга.SaveAs(прИмяВремФайла, 6); Книга.Close(0); Эксель.Quit(); ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки() + ", вероятно не установлен ексель...", "!"); Возврат; КонецПопытки; Если фс.СуществуетФайл(прИмяВремФайла) = 1 Тогда Текст = СоздатьОбъект("Текст"); Текст.Открыть(прИмяВремФайла); КонецЕсли; Для сч=1 По Текст.КоличествоСтрок() Цикл Сообщить(Текст.ПолучитьСтроку(сч)); КонецЦикла; Сохраняю экселевский файл в csv, где все выглядит так, как надо. Может пригодится кому: У метода SaveAs(прИмяВремФайла, 6), второй параметр (6) - формат сохраняемого файла, причем если пишу формат отсюда http://msdn.microsoft.com/en-us/library/aa194915(v=office.10).aspx, это не работает. Чтобы узнать эту цифру сохранил файл екселя в csv, и открыл его программно, а затем Сообщить(Книга.FileFormat) |
|||
21
Mikeware
22.06.12
✎
11:36
|
(20) Блинн. нетленка, йоптыть... ты еще запатентуй....
зы. То, что указанные тобой XlFileFormat - символьные представления xbckjds[ констант - известно всем желающим... |
|||
22
Zhuravlik
22.06.12
✎
13:27
|
(22) Мне известно не было, к чему такая язвительность? По-моему это хороший тон к своему вопросу писать его решение. Тем более если сам его нашел, т.е. в ветке мне никто не посоветовал пересохранить файл екселя методами Excel.Application.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |