|
Читаю с екселя массивом. в УФ. Строку (штрихкод) превращает в число-теряю нули. | ☑ | ||
---|---|---|---|---|
0
temsa
14.03.15
✎
06:16
|
Как это обойти товарищи?
Напрмер "00653" = "653" форматом ничего не получается |
|||
1
Web00001
14.03.15
✎
06:28
|
читай "text" а не "value"
|
|||
2
temsa
14.03.15
✎
06:41
|
(1) Попробовал.
Но возникли другие глюки. тут: ДанныеЭксель = Excel.Range(Excel.Sheets(1).Cells(2,1), Excel.Sheets(1).Cells(КонечнаяСтрокаДанных,КоличествоКолонокДанных)).Value.Выгрузить(); Value меняю на text и тогда ДанныеЭксель не дает прочесть на сервере ЧислоСтрок = ДанныеЭксель[0].Количество(); |
|||
3
NcSteel
14.03.15
✎
09:01
|
(2) А если запросом?
|
|||
4
Web00001
14.03.15
✎
09:37
|
(2)Ерунда какая то. Почему не дает, что пишет? Что такое Выгрузить()? откуда оно взялось и что оно делает в ком объекте экселя? Вообще строка какая то странная, не могу понять как это работает и откуда там запятая в середине между выраженими.
|
|||
5
Web00001
14.03.15
✎
09:39
|
+(4)Пригляделся, ты читаешь область экселя и выгружаешь ее. Читай построчно в цикле.
|
|||
6
bolobol
14.03.15
✎
11:26
|
Судя по моим экспериментам - чтение построчно через Техт не поможет, так как лидирующие нули заданы форматом ячейки - так выгружается из 1С в форматы старше xls95.
А формат через СОМ при всём желании - мне получить не удалось. |
|||
7
temsa
14.03.15
✎
11:55
|
Короче тупо при выгрузке из 1с 77 к штрихкоду добавил букву
"Ш" а уже при загрузке в 1с8.3 убирал эту букву Короче тупо смекалка. |
|||
8
bolobol
14.03.15
✎
12:26
|
(7) Если уж добавлять - то добавлять спец символ ' - строка. Но и его убирать придётся при чтении.
|
|||
9
Шапокляк
14.03.15
✎
12:40
|
А если ничего не добавлять, а все прочитанное приводить к строке, дополненной слева нулями до определенной длины?
|
|||
10
ShoGUN
14.03.15
✎
12:41
|
Можно сам файл преобразовать, формат ячеек столбца сделать строковым.
(5) Построчное чтение эдак на порядок медленнее. |
|||
11
bolobol
14.03.15
✎
12:50
|
(10) Сам файл не преобразуешь - данные в нём без ведущих нулей. Они видны визуально из-за формата.
(9) Откуда бы знать, читая файл, что нули вообще должны быть в начале? |
|||
12
ShoGUN
14.03.15
✎
12:52
|
(11) >Откуда бы знать, читая файл, что нули вообще должны быть в начале?
Формат ячейки анализировать(но это медленно очень). |
|||
13
bolobol
14.03.15
✎
13:16
|
(12) Пример: ИНН - бывает 12 знаков, бывает 10. Т.о. - даже зная максимальную ширину поля, в которое загружается колонка - нельзя однозначно сказать, что ведущими нулями добивать до 12-ти.
|
|||
14
ShoGUN
14.03.15
✎
13:23
|
(13) Тебе универсальная загрузка нужна, чтоб сама понимала? Тогда конечно никак. А вообще, зная назначение поля - можно добавить форматирование в код.
|
|||
15
bolobol
14.03.15
✎
13:39
|
(14) Ну - универсальное - это предел всех стремлений))
А так-то - не верю, что в экселе видеть можно установленный формат, а прочитать через СОМ - нет. Но никак не нашёл... Апаю тему, вдруг - чудо! )) |
|||
16
Torquader
14.03.15
✎
13:43
|
А что нельзя формат ячейки получить, или попробовать слово Formula для получения значения ?
|
|||
17
bolobol
14.03.15
✎
14:50
|
(16) Вот формат как получить - не понимается.
А Формула - это "=Сумм(Если(...." |
|||
18
Torquader
14.03.15
✎
14:58
|
(17) Через OLE поле Formula даёт то, что реально записано в ячейке, а не что выводится.
|
|||
19
bolobol
14.03.15
✎
15:07
|
(18) Верно. Вот 463 и даст, а не 0000463 при формате "0000000"
|
|||
20
Torquader
14.03.15
✎
18:52
|
А что показывает "NumberFormat" ?
|
|||
21
zladenuw
14.03.15
✎
18:56
|
(6) так Это Все Range. если читать по строчно. то через Техт все ок.
|
|||
22
bolobol
14.03.15
✎
19:39
|
(20) (21) Это если уже первая строка данных явно показывает расхождения, а NumberFormat.Выгрузить() и Техт.Выгрузить() - не работают, а значит читать нужно все ячейки поячеечно, что к задаче неприменимо.
(19) - здесь ошибся - только Value и Formula показывают 463 НимберФормат показывает 0000000 Текст: 0000463 |
|||
23
bolobol
14.03.15
✎
19:41
|
Но, как мы помним, например - ИНН - может быть 10 и 12 циферь. Т.е., взяф формат для первой строки и применив для всей таблицы - получим либо 11-ти значные ИНН, либо 12 знаков у юр.лица.
|
|||
24
ВасяЧ
14.03.15
✎
20:18
|
(7) из 7.7 в 8.3 через Эксель?
Нахуа? |
|||
25
temsa
14.03.15
✎
20:38
|
(24)
Предыстория. Самописка на 1с 77 работало 5-6 лет. Надоело сопровождать в таком виде ибо привык уже к 1с 8.3 Переписал самописку на 1с 8.3 1. Решил через КД сделать. Понял что не взлетит в самописку надо встаивать универсальные функции и процедуры обслуживающие стандартные обработки. Отбросил... 2. ЗагрузкаДанныхИзТабличногоДокумента подошел классно все работает на ура. Но Я нашел всего лишь на обычных формах. Переводить все РИб на обычные и грзуить данные тоже изврат. Все перенес именно этой обработкой. 3. Но вот одну таблицу решил именно через ексель. Вот и всплыла проблема. Но это обошел как выше описал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |