![]() |
![]() |
![]() |
|
проблема с загрузкой из екселя | ☑ | ||
---|---|---|---|---|
0
gamburge
29.09.15
✎
15:07
|
Добрый день.При загрузке данных с екселя загружаю данные
Телефон1=СокрЛП(Страница.Cells(НомерСтроки,3).text); в екселе теелфон в виде 067-111-22-33 но попадаются ячейки вот с такими 3,8098E+11 видами.как быть?чтобы пользователь не мучался с переформатированием екселя,открывая а сразу грузил правильно.Телефон1=СокрЛП(Страница.Cells(НомерСтроки,3).value); в данном случае не кактит |
|||
1
Happy Bear
29.09.15
✎
15:08
|
вместо text используй value
|
|||
2
Happy Bear
29.09.15
✎
15:09
|
почему не катит?
|
|||
3
Живой Ископаемый
29.09.15
✎
15:10
|
Вместио OLE используй ADO, будет раз в 60-200 быстрее к тому же
|
|||
4
Fragster
гуру
29.09.15
✎
15:11
|
Страница.Cells(НомерСтроки,3).numberformat="@"
|
|||
5
gamburge
29.09.15
✎
15:12
|
(1)использовал value так в екселе если стоит формат цифры 5 456 то берет только 5.или использовать value только для номера?
|
|||
6
НЕА123
29.09.15
✎
15:16
|
Formula
|
|||
7
Tatitutu
29.09.15
✎
15:18
|
(0) оно может только так отображаться
или иметь уже представление значения попробуй запусти в VBA MsgBox ActiveCell.FormulaLocal MsgBox ActiveCell.FormulaR1C1 MsgBox ActiveCell.FormulaR1C1Local MsgBox ActiveCell.Text MsgBox ActiveCell.Value2 MsgBox ActiveCell.Value все будет бестолку , единственное количество знаков Text : "5,64565E+28" : Variant/String Value : 5,64564564564564E+28 : Variant/Double так что совет : правильно формировать выгрузку |
|||
8
gamburge
29.09.15
✎
15:21
|
если использовать value то (066) 300-77-92
превращается в 380 663 007 792 неподходит валуе |
|||
9
gamburge
29.09.15
✎
15:22
|
(7) выгрузка происходит из админик сайта на престашопе.выгружается в формате csv
|
|||
10
gamburge
29.09.15
✎
15:23
|
странно почему же выборочно ломает строки а не все
|
|||
11
Tatitutu
29.09.15
✎
15:24
|
(9) попробуй как текст с разделителями читать (а не EXCEL)
(10) огрначение на количество знаков в ячейки и от ее формата зависит. |
|||
12
gamburge
29.09.15
✎
15:33
|
(11)если это ограничение то почему я вижу там такие номера номральные 066-240-42-13 тут гораздо больше символов
|
|||
13
Fragster
гуру
29.09.15
✎
15:36
|
что, (4) не прокатило?
|
|||
14
Tatitutu
29.09.15
✎
15:41
|
(12) это все нормально
ты вот эту покажу 3,8098E+11 |
|||
15
gamburge
29.09.15
✎
15:49
|
(13)не совсм понимаю Страница.Cells(НомерСтроки,3).numberformat="@"
|
|||
16
gamburge
29.09.15
✎
15:50
|
(14)380663027793
|
|||
17
Fragster
гуру
29.09.15
✎
16:02
|
(15) сначала присвоить формат, потом читать .text.
вообще писателей экселя за то, что она делает с .csv надо кастрировать немного. нормального результата можно добиться только создав новый файл и сделав данные -> из текста. ну а так - можно посоветовать вставить _второй_ строкой в текст что-то типа ф;ф;ф;........ и потом её игнорировать при импорте |
|||
18
gamburge
29.09.15
✎
16:17
|
(17) Страница.Cells(НомерСтроки,4).numberformat="@";
Телефон2=СокрЛП(Страница.Cells(НомерСтроки, 4).text); так? |
|||
19
gamburge
29.09.15
✎
16:30
|
3,81E+11 все равно такое выкидывает.а в конце еще спрашивает сохранить ексель файл или нет
|
|||
20
gamburge
29.09.15
✎
16:35
|
ну что никто не поможет?
|
|||
21
gamburge
29.09.15
✎
16:37
|
поставил вручную в екселе формат текстовый и вот что показывает ексель 3,80683E+11
|
|||
22
Fragster
гуру
29.09.15
✎
16:38
|
значит, надо отказаться от экселя и грузить по другому
|
|||
23
Fragster
гуру
29.09.15
✎
16:39
|
например через текстовый драйвер adodb.
|
|||
24
Fragster
гуру
29.09.15
✎
16:39
|
но ему все равно может потребоваться добавление второй строки со значениями, сбрасывающими типы колонок в текст
|
|||
25
gamburge
29.09.15
✎
16:48
|
а вот так сработало Страница.Cells(НомерСтроки,4).numberformat="0,00";
Телефон2=СокрЛП(Страница.Cells(НомерСтроки, 4).text); выводит 380663027792,00 вот если бы формат дополнительный удалось вывести там без запятой и без нулей. |
|||
26
gamburge
29.09.15
✎
16:49
|
только зачем то в конце загрузки ексель прости сохранится.А пользователя это пугает.
|
|||
27
Fragster
гуру
29.09.15
✎
16:50
|
Excel.Application.DisplayAlerts = false;
|
|||
28
gamburge
29.09.15
✎
17:05
|
(27)спасибо
|
|||
29
Сияющий в темноте
29.09.15
✎
17:24
|
чтобы excel считала число строкой перед ним нужно ставить апостроф
если же в числе есть нечисловые символы то это строка априори числа в excel хранятся как double и имеют не более семнадцати знаков точности если бы у ВПС были номера счетов то простое открытие их в excel безвозвратно их бы испортило а csv файлы проще читать построчно и не связываться с офисом,которого может и не быть |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |