|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Здравствуйте. Помогите разобраться. Загружаю в 1С из Excel через COM-соединение: Код: vbnet 1. 2. 3. 4. 5.
При этом Область.Value берет именно ЗНАЧЕНИЯ ячеек, а не форматированные значения, т.е. если в ячейке был артикул 0000056789 (формат дополнительный или какой либо еще), получаю число 56 789. Хочу получать так же, как если бы я делал это с помощью ЛистЭксель.Cells(СчетчикСтрок,СчетчикКолонок).Text, то-есть приведенным к строке 0000056789. Как это реализовать, может как-то предварительно обработать область. Интересует программное решение, предварительное форматирование файла не предлагать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 13:56 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Вы просите значения - и получаете значения. Что странного? Значение и его отображение на экране - две большие разницы. Вопросы следует адресовать встроенному языку одноэски. Хотя несколько сомневаюсь, что через СОМ можно взять отображение... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 14:51 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Akina, Вот таким образом я получаю именно отображаемые данные: ЛистЭксель.Cells(Строка,Колонка).Text Но мне надо получить область ячеек в массив, потому что это во много раз быстрее чем перебирать каждую ячейку через COM ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 14:58 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Немного конкретизирую: Так я могу получить форматированные значения ячейки, т.е. то, что вижу в Эксель: Область.Cells(i, j).Text. Так я могу получить область ячеек, но со ЗНАЧЕНИЯМИ без форматирования: Область.Value. Я же хочу получить сразу область, но с форматированными значениями. Вопрос: Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 15:14 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Ram3данные: ЛистЭксель.Cells(Строка,Колонка).TextВот именно - .Text получает ОТОБРАЖЕНИЕ данных, а не значение. Но оно не является компонентом массива данных - а потому полученный МАССИВ данных его и не содержит. Думаю, проблема нерешаема. Перебирайте... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 15:19 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Akina, проблема в том что перебором во много раз медленнее, а файлы бывают очень большие, надеялся найти оптимальное решение... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 15:22 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Пробовал Область.NumberFormat = "@", не помогает. Может есть еще какой-то способ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 15:30 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Может достать через ADO с IMEX=1, а не через СОМ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 15:35 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Ошибка заложена изначально - ещё в Excel, где вместо значения существенным является его отображение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 16:19 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Shocker.Proдостать через ADO с IMEX=1 IMEX работает более чем странно... нестабильно, я бы сказал. Всё-таки там в режиме импорта заложен некий "интеллект", который стараетсчя определить, надо или не надо - и, бывает, ошибается. А с HDR=Yes мне вообще не удалось заставить его работать как надо... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 16:23 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Ram3, Вы же, наверно, знаете, какой должен быть формат? Поэтому выгружайте значения одним массивом, а потом форматируйте в своей программе. Наверно, будет быстрее, чем по ячейке вытаскивать .Text. Кроме того, если форматированное число или дата не умещается в ячейке, в ней отображается ##### , такой текст Вы и получите. А у себя сможете сделать правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 16:44 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Казанский, 1. к сожалению не знаю какой может быть формат, нужно универсальное в этом плане решение. К тому же некоторые файлы были до этого так же выгружены (либо просто копипаст) из 1С и других программ в Эксель, а Эксель, в свою очередь, любит применять к полученным данным свой автоформат, например артикул 012345 он запишет как индекс, 00012345 как какой-то другой формат со значением 12345 и т.п... а это все один и тот же файл и колонка. 2. Через .Text я всегда полую именно форматированное значение приведенное к строке, давно с этим работаю и никогда не было ##### ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 17:06 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Ram3нужно универсальное в этом плане решениеУниверсальное решение - это формирование вывода на клиенте и работа со значениями в БД. Нужны ведущие нули? добавляйте при выводе на экран. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 17:16 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
Ram32. Через .Text я всегда полую именно форматированное значение приведенное к строке, давно с этим работаю и никогда не было ##### Измените ширину колонок эксельного файла, чтобы получить ##### на экране. Сохраните. Получите контент через .Text... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 17:17 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
AkinaRam32. Через .Text я всегда полую именно форматированное значение приведенное к строке, давно с этим работаю и никогда не было ##### Измените ширину колонок эксельного файла, чтобы получить ##### на экране. Сохраните. Получите контент через .Text... Да, проверил, действительно так, видимо просто не замечал раньше. Казанский, извиняюсь... AkinaRam3нужно универсальное в этом плане решениеУниверсальное решение - это формирование вывода на клиенте и работа со значениями в БД. Нужны ведущие нули? добавляйте при выводе на экран. не понял про формирование вывода, я не формирую вывод, я загружаю данные из имеющихся файлов. Вывод на экран мне тоже не нужен, да и сколько нулей в каждом конкретном случае добавлять я не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 17:30 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
То есть, несмотря на то, что Вы убедились, что с отображением работать нельзя (#####), Вы всё равно желаете работать именно с ними? Если ведущие нули - значащие, они должны существовать в самих данных. А не в выводе этих данных на экран. Ищите способ перенести изменения из отображения в сами данные. ИМХО. Интересно, что Вы станете делать, если в каком-то файле на самом деле будут нарисованы диезы? обработаете пакетно вслепую? вся обработка слетит, и хорошо если без фатальных последствий. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 18:17 |
|
Получение форматированных значений ячеек
|
|||
---|---|---|---|
#18+
AkinaТо есть, несмотря на то, что Вы убедились, что с отображением работать нельзя (#####), Вы всё равно желаете работать именно с ними? Если ведущие нули - значащие, они должны существовать в самих данных. А не в выводе этих данных на экран. Ищите способ перенести изменения из отображения в сами данные. ИМХО. Интересно, что Вы станете делать, если в каком-то файле на самом деле будут нарисованы диезы? обработаете пакетно вслепую? вся обработка слетит, и хорошо если без фатальных последствий. Да, желаю работать именно с ним, т.к приемлемой альтернативы нет, и все минусы этого подхода меня устраивают. Давайте уж не будем убеждать меня, что мне это не нужно. Я вроде объяснил, что получаемые на входе файлы представляют из себя кашу форматов, и с этим поделать ничего нельзя, принимаем как данность. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2014, 09:32 |
|
|
start [/forum/topic.php?fid=61&fpage=64&tid=2174212]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 140ms |
0 / 0 |