powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Получение форматированных значений ячеек
17 сообщений из 17, страница 1 из 1
Получение форматированных значений ячеек
    #38571573
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите разобраться. Загружаю в 1С из Excel через COM-соединение:

Код: vbnet
1.
2.
3.
4.
5.
Excel = Новый COMОбъект("Excel.Application");  
Excel.WorkBooks.Open(ПутьКФайлу);  
ЛистЭксель = Excel.Sheets(НомерЛистаExcel);  
Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок));  
Данные = Область.Value.Выгрузить();



При этом Область.Value берет именно ЗНАЧЕНИЯ ячеек, а не форматированные значения, т.е. если в ячейке был артикул 0000056789 (формат дополнительный или какой либо еще), получаю число 56 789. Хочу получать так же, как если бы я делал это с помощью ЛистЭксель.Cells(СчетчикСтрок,СчетчикКолонок).Text, то-есть приведенным к строке 0000056789.
Как это реализовать, может как-то предварительно обработать область. Интересует программное решение, предварительное форматирование файла не предлагать.
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571667
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы просите значения - и получаете значения. Что странного? Значение и его отображение на экране - две большие разницы.
Вопросы следует адресовать встроенному языку одноэски. Хотя несколько сомневаюсь, что через СОМ можно взять отображение...
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571683
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Вот таким образом я получаю именно отображаемые данные: ЛистЭксель.Cells(Строка,Колонка).Text
Но мне надо получить область ячеек в массив, потому что это во много раз быстрее чем перебирать каждую ячейку через COM
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571715
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного конкретизирую:
Так я могу получить форматированные значения ячейки, т.е. то, что вижу в Эксель: Область.Cells(i, j).Text.
Так я могу получить область ячеек, но со ЗНАЧЕНИЯМИ без форматирования: Область.Value.
Я же хочу получить сразу область, но с форматированными значениями.
Вопрос: Как?
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571732
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ram3данные: ЛистЭксель.Cells(Строка,Колонка).TextВот именно - .Text получает ОТОБРАЖЕНИЕ данных, а не значение. Но оно не является компонентом массива данных - а потому полученный МАССИВ данных его и не содержит.

Думаю, проблема нерешаема. Перебирайте...
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571741
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
проблема в том что перебором во много раз медленнее, а файлы бывают очень большие, надеялся найти оптимальное решение...
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571755
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал Область.NumberFormat = "@", не помогает. Может есть еще какой-то способ?
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571759
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может достать через ADO с IMEX=1, а не через СОМ?
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571853
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка заложена изначально - ещё в Excel, где вместо значения существенным является его отображение.
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571861
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proдостать через ADO с IMEX=1
IMEX работает более чем странно... нестабильно, я бы сказал. Всё-таки там в режиме импорта заложен некий "интеллект", который стараетсчя определить, надо или не надо - и, бывает, ошибается. А с HDR=Yes мне вообще не удалось заставить его работать как надо...
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571918
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ram3,

Вы же, наверно, знаете, какой должен быть формат? Поэтому выгружайте значения одним массивом, а потом форматируйте в своей программе. Наверно, будет быстрее, чем по ячейке вытаскивать .Text.
Кроме того, если форматированное число или дата не умещается в ячейке, в ней отображается ##### , такой текст Вы и получите. А у себя сможете сделать правильно.
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571967
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,
1. к сожалению не знаю какой может быть формат, нужно универсальное в этом плане решение. К тому же некоторые файлы были до этого так же выгружены (либо просто копипаст) из 1С и других программ в Эксель, а Эксель, в свою очередь, любит применять к полученным данным свой автоформат, например артикул 012345 он запишет как индекс, 00012345 как какой-то другой формат со значением 12345 и т.п... а это все один и тот же файл и колонка.

2. Через .Text я всегда полую именно форматированное значение приведенное к строке, давно с этим работаю и никогда не было #####
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571988
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ram3нужно универсальное в этом плане решениеУниверсальное решение - это формирование вывода на клиенте и работа со значениями в БД.

Нужны ведущие нули? добавляйте при выводе на экран.
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38571994
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ram32. Через .Text я всегда полую именно форматированное значение приведенное к строке, давно с этим работаю и никогда не было ##### Измените ширину колонок эксельного файла, чтобы получить ##### на экране. Сохраните. Получите контент через .Text...
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38572023
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaRam32. Через .Text я всегда полую именно форматированное значение приведенное к строке, давно с этим работаю и никогда не было ##### Измените ширину колонок эксельного файла, чтобы получить ##### на экране. Сохраните. Получите контент через .Text...

Да, проверил, действительно так, видимо просто не замечал раньше.
Казанский, извиняюсь...

AkinaRam3нужно универсальное в этом плане решениеУниверсальное решение - это формирование вывода на клиенте и работа со значениями в БД.

Нужны ведущие нули? добавляйте при выводе на экран.

не понял про формирование вывода, я не формирую вывод, я загружаю данные из имеющихся файлов.
Вывод на экран мне тоже не нужен, да и сколько нулей в каждом конкретном случае добавлять я не знаю
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38572108
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть, несмотря на то, что Вы убедились, что с отображением работать нельзя (#####), Вы всё равно желаете работать именно с ними?

Если ведущие нули - значащие, они должны существовать в самих данных. А не в выводе этих данных на экран. Ищите способ перенести изменения из отображения в сами данные. ИМХО.

Интересно, что Вы станете делать, если в каком-то файле на самом деле будут нарисованы диезы? обработаете пакетно вслепую? вся обработка слетит, и хорошо если без фатальных последствий.
...
Рейтинг: 0 / 0
Получение форматированных значений ячеек
    #38572442
Ram3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaТо есть, несмотря на то, что Вы убедились, что с отображением работать нельзя (#####), Вы всё равно желаете работать именно с ними?

Если ведущие нули - значащие, они должны существовать в самих данных. А не в выводе этих данных на экран. Ищите способ перенести изменения из отображения в сами данные. ИМХО.

Интересно, что Вы станете делать, если в каком-то файле на самом деле будут нарисованы диезы? обработаете пакетно вслепую? вся обработка слетит, и хорошо если без фатальных последствий.

Да, желаю работать именно с ним, т.к приемлемой альтернативы нет, и все минусы этого подхода меня устраивают. Давайте уж не будем убеждать меня, что мне это не нужно. Я вроде объяснил, что получаемые на входе файлы представляют из себя кашу форматов, и с этим поделать ничего нельзя, принимаем как данность.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Получение форматированных значений ячеек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]