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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.06.2009, 11:04   #1  
Dark Light is offline
Dark Light
Участник
 
64 / 49 (0) +++
Регистрация: 17.02.2009
Адрес: Омск
Проблема некорректного вывода данных в EXCEL
Добрый день.

Есть форма с ActiveX, в которую встроен Excel. Но проблема не в этом (скорее всего).

Проблема возникает, когда я вывожу в ячейку текстовое значение, вроде "01.001". В Excel'е она превращается в строку "1.001" (если ячейка имеет текстовый формат).

Делаю я это через
X++:
comRange.value2("01.001");
Пробовал через array как в Excel быстрый вывод. Без изменений.

Единстенный вариант решения пока - это выводить текстовые данные с " \' " в начале, что сильно не хочется.

Последний раз редактировалось Dark Light; 10.06.2009 в 11:26.
Старый 10.06.2009, 12:23   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Dark Light Посмотреть сообщение
Есть форма с ActiveX, в которую встроен Excel.
Эта штука называется OWC.Spreadsheet. Она ПОХОЖА на Excel, но всё же отличается от него: как в худшую (по большей части), так и в лучшую (бывает и такое!) стороны.
Цитата:
Сообщение от Dark Light Посмотреть сообщение
Единстенный вариант решения пока - это выводить текстовые данные с " \' " в начале, что сильно не хочется.
В данном случае Вы попали на "худшую сторону". Увы, это не ПОКА, для Spreadsheet это просто единственный вариант. Если, конечно, не считать вариант с формулой, который еще более туманен: comRange.Value2('=""&"01.001"');

Немного успокою Вас и уберегу от дальнейшего безуспешного копания на эту тему: в Spreadsheet, как и в Excel, есть метод CopyFromRecordset(), который выводит на лист заранее приготовленный ADODB.Recordset. Так вот для строковых значений типа "01.001" этот метод в Spreadsheet'е автоматически добавляет начальный апостроф (в "большом" Excel'е такого не происходит).
За это сообщение автора поблагодарили: Logger (4).
Старый 30.06.2009, 09:10   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
К сожалению, проблема экспорта в XL сохраняется, например, если у нас выгружается столбец сумм, где некоторые значения, например 30.05, могут превратиться в дату (30 мая). Для файлов .XLS проблема решается возведением выражения в кавычки:
X++:
strfmt("'%1'", SomeTable.SomeValue)
Для файлов же .CSV такая проблема остается. Открыв в блокноте, можно убедиться, что выгрузка прошла успешно, и данные не испортились. Просто сам XL отображает эти данные, автоматически подбирая формат ячеек под значение.
Старый 30.06.2009, 09:22   #4  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от dech Посмотреть сообщение
К сожалению, проблема экспорта в XL сохраняется, например, если у нас выгружается столбец сумм, где некоторые значения, например 30.05, могут превратиться в дату (30 мая). Для файлов .XLS проблема решается возведением выражения в кавычки:
X++:
strfmt("'%1'", SomeTable.SomeValue)
Для файлов же .CSV такая проблема остается. Открыв в блокноте, можно убедиться, что выгрузка прошла успешно, и данные не испортились. Просто сам XL отображает эти данные, автоматически подбирая формат ячеек под значение.
вместо "30.05" пишите "30,05"
Старый 30.06.2009, 14:43   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Необходимо сначала установить нужный формат ячейки Excel (range.NumberFormat()), а потом вставлять данные в эту ячейку.

Если же вы не форматируете ячейки Excel, т.е. оставляете ее в формате "Общий", то Excel оставляет за собой право попытаться самостоятельно определить формат полученных данных и выполнить конвертация в соответствии с настройками отображения. Что он, собственно, и делает.
Теги
excel, spreadsheet

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Быстрый способ вывода данных в Excel с картинками Zlojbarsuk DAX: Программирование 10 23.10.2008 20:13
Проблема с импортом из Excel через COM Romsrs DAX: Программирование 18 10.06.2008 10:34
Возникла проблема с получением имени файла при создании своего канала вывода отчетов. oleg_kap DAX: Программирование 3 06.06.2006 14:12
Проблема с созданием шаблона импорта Excel в 3.0 AK-76 DAX: Администрирование 1 25.07.2003 22:21

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

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

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