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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.03.2003, 17:52   #1  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Экспорт в Excel - поле формата "Дата"
Всем привет!
Ситуация: программно создаю ExcelWorkbook, нахожу ячейку, далее
Cell.value2( SystemDateGet());
Cell.numberFormat( "
Далее мысль обрывается...
Никто не сталкивался с форматированием даты?
Старый 25.03.2003, 18:03   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Гораздо лучше будет сначала форматировать ячейку, а потом ей значения присваивать. Это раз.

Два. В чем проблема? В строке формата? Мне "dd.mm.yy" больше всего нравится.
Старый 25.03.2003, 18:08   #3  
LTA is offline
LTA
Участник
 
94 / 10 (1) +
Регистрация: 27.01.2003
Для экспорта в Excel можно использовать класс ComExcelDocument_RU, который берет на себя выполнение простых операций с Excel
Старый 25.03.2003, 18:17   #4  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
дописываем:
Cell.numberFormat("dd.mm.yy");
Cell.value2(SystemDateGet());
на выходе - "dd.mm.yy" вместо самой даты
Старый 25.03.2003, 18:37   #5  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
to LTA: я его и использую.
Интересуют две простые операции:
1. Назначение цвета фона для ячейки - Cell.Interior().color() - почему-то ячейки перекрашиваются в радикальный чёрный цвет
2. Форматирование даты - вылетает по ошибке.
Старый 25.03.2003, 18:40   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
А зачем Value2?

Все уже читали про SysExcelImport, но у меня очень долго жил в другом приложении код, который бегал по рекордсету и в зависимости т типа поля формировал NumberFormat и присваивал Value, и все как-то жило.

Цитата:
на выходе - "dd.mm.yy" вместо самой даты
В аксапте лень проверять, но в VBA

Sub test()
ActiveCell.NumberFormat = "dd.mm.yy"
ActiveCell.Value2 = Now
ActiveCell(2, 1).Activate
ActiveCell.NumberFormat = "dd.mm.yy"
ActiveCell.Value = Now
End Sub

все работает
Старый 25.03.2003, 18:59   #7  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Ну-ну...
В VBA мы все мастера - и copyFromRecordset сделаем и сводную таблицу сляпаем.


Но при запуске Excel как сервер автоматизации выясняется, что не все методы выглядят так же, как и в VBA.
Старый 25.03.2003, 19:30   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Ну-ну

Цитата:
В VBA мы все мастера - и copyFromRecordset сделаем и сводную таблицу сляпаем
Стыдно конечно признаваться, но я ни разу не делал сводной таблицы И copyFromRecordset - тоже ни разу

Что касается цвета

COMCell = COMAppl.activecell();
COMInterior = COMCell.Interior();
COMInterior.Color(WINAPI::RGB2int(255,0,0));

Оно таки красное

Что касается нелюбимого Вами VBA:

если запустить

MsgBox ActiveCell.NumberFormat
MsgBox ActiveCell.NumberFormatLocal

стоя на ячейке, в которой присваивание даты свалилось, видно, что
NumberFormat забит слэшами, которых там быть не должно
Старый 26.03.2003, 12:05   #9  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
За цвет спасибо!
По поводу сабжа - пришлось сдаться:
Cell.value2(strfmt(" %1",PLine.EXWDate));
Старый 26.03.2003, 17:06   #10  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
вместо Cell.numberFormat("dd.mm.yy") попробуй
Cell.numberFormatLocal("ДД.ММ.ГГ")
Старый 26.03.2003, 19:14   #11  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Насчёт NumberFormatLocal - спасибо действительно работает. Непонятно, почему не работает NumberFormat. И вообще - может быть существует более производительный способ вывода данных в Excel, чем через аутомэйшен по ячейкам?
Старый 27.03.2003, 09:54   #12  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Похоже это глюки в реализации com-сервера Еxcel, в Delphi всё аналогично.
(хотя к VB это не относится).
Более производительно передавать данные через вариантный массив в выбранный range. В Axapta не пробовал, а в Delphi выглядит примерно так:

var ArrayData: Variant;
...
ArrayData := VarArrayCreate([1, 10, 1,10]);
// fill array
for I := 1 to 10 do
for J:= 1 to 10 do
ArrayData[I,J]:= ... ;
....
Range[ Cells.Item[1,1], Cells.Item[10,10] ].Value := ArrayData;
Старый 27.03.2003, 11:40   #13  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
За массив опять спасибо. В аксапте тоже получилось:
doc.findRange(strfmt("A%1:",Num) + COMExcelDocument_RU::numToNameCell(Arr.lastIndex(),Num)).value2(
COMVariant::createFromArray(Arr));
Скорость вывода увеличилась в разы.
Старый 24.04.2003, 13:40   #14  
Buba is offline
Buba
Участник
 
90 / 10 (1) +
Регистрация: 24.04.2003
Адрес: Томск
Если не трудно, нельзя ли отобразить весь код по вставки значений в Excel из массива (с описанием Num и Arr)
Старый 24.04.2003, 19:53   #15  
Yury is offline
Yury
Участник
 
27 / 16 (1) ++
Регистрация: 25.09.2002
А заодно подскажите, как узнать, какие свойства и методы (и какая сигнатура методов) есть у какого-либо Com - объекта
Старый 25.04.2003, 10:01   #16  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
в tlb, exe, dll файлике подглядеть, type library editor'ом.
Теги
excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка: фантомное дублирующее поле типа "дата" в гриде belugin DAX: Программирование 8 14.06.2006 00:15
поле "Документы к обновлению" в форме "Обработка закупки" sev DAX: Функционал 3 08.12.2005 17:21
Проект "Движок отчётов с поддержкой Excel" Alks DAX: База знаний и проекты 6 07.01.2005 02:53
Заказ. Форма "Разноска накладной"->Строки-> Поле "закрытие" ATimTim DAX: Функционал 2 30.11.2004 16:14
Журнал переноса->Строки->Поле "Количество" . Нужен "0" по умолчанию вместо ATimTim DAX: Функционал 5 26.06.2004 12:17

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

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

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