AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.01.2013, 13:50   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Gustav Посмотреть сообщение
Попробуйте принудительно "дернуть" значение ячейки после наложения на нее формата "Текстовый" (выражаюсь на VBA):

Range("A1").Value2 = "'" & Range("A1").Value2 (это известная операция добавление ведущего апострофа)

или так

Range("A1").Value2 = Range("A1").Value2 & "" (здесь просто пустая строка добавляется)
Если это делать на стороне аксапты, то получается что в качестве аргумента функции COM.Value2() я должен передать результат конкатенации его же значения с апострофом или пустой строкой, которое я и немогу получить. Замкнутый круг получается
"Чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное, а у нас денег нет"

Цитата:
Сообщение от Gustav Посмотреть сообщение
Ещё у ячейки есть свойство Range("A1").Text, но с ним надо осторожно, так как оно зависит от настроек отображения, например, от текущей ширины колонки.
К сожалению и это свойство не работает если фактически тип у ячейки значения COMVariantType::VT_R8

На самом деле непонятно откуда Excel берёт информацию о типе ячейки, потому что отображает он её корректно в текстовом виде, а хранит получается что как число
Старый 25.01.2013, 14:18   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если это делать на стороне аксапты, то получается что в качестве аргумента функции COM.Value2() я должен передать результат конкатенации его же значения с апострофом или пустой строкой, которое я и немогу получить. Замкнутый круг получается
Да, пожалуй... А попробуйте сделать это через MS Script Control ( Поговорим об MS Script Control ). Это получится так же, как и на VBA в самом Excel. И можно даже и саму строку получить уже как настоящую строку из Script Control'а.
Старый 25.01.2013, 16:40   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
На самом деле непонятно откуда Excel берёт информацию о типе ячейки, потому что отображает он её корректно в текстовом виде, а хранит получается что как число
Там все хитро, но суть в том, что строковые значения хранятся в отдельной от ячеек области - Shared Strings. В самих же ячейках, при этом, сохраняется ссылка на значение в этой области (по факту - индекс в массиве строк)

Нестроковые значения хранятся непосредственно в ячейках и их тип определяется самими данными.

Когда меняется формат ячейки, значение в ней хранящееся не переносится в эту область, а остается в ячейке (по сути, меняется лишь отображение этих данных, что хорошо видно на примере дат).

Если тип ячейки текстовый или указан перед данными апостроф, то вносимое значение всегда будет сохраняться в разделяемой области.

PS
Для получения текстового значения ячейки независимо от типа хранимых в ней данных можно пользоваться функцией Text() вместо Value() или Value2()
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Logger (10).
Старый 25.01.2013, 17:41   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
про .Text()
Цитата:
Сообщение от AndyD Посмотреть сообщение
Для получения текстового значения ячейки независимо от типа хранимых в ней данных можно пользоваться функцией Text() вместо Value() или Value2()
Цитата:
Сообщение от Gustav Посмотреть сообщение
Ещё у ячейки есть свойство Range("A1").Text, но с ним надо осторожно, так как оно зависит от настроек отображения, например, от текущей ширины колонки.
http://www.excelworld.ru/forum/3-48-27402-16-1349248973
За это сообщение автора поблагодарили: mikki_messer (1).
Старый 25.01.2013, 20:28   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Увеличить ширину колонки перед считыванием.
И нехай подавится
__________________
Axapta v.3.0 sp5 kr2
Теги
excel, импорт, импорт из excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Чтение ИЗ Excel (а не запись в него) Mechanizm DAX: Программирование 10 04.07.2004 11:50
Чтение Excel-ячейки в Аксапте (2.5) через COM AKIS DAX: Программирование 3 25.03.2004 20:18

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:32.