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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.11.2016, 14:44   #1  
Artikov is offline
Artikov
Участник
 
33 / 12 (1) ++
Регистрация: 06.06.2016
? высота Range ячеек Excel через COM объекты
Добрый день!

Есть такая проблема: мне надо определять высоту ячейки в Excel через Com объекты. В общем случае у меня выбирается какой-то диапазон ячеек, который принадлежит заданному bookmark. Если в этом bookmark всего одна строка, то все отрабатывает и я получаю высоту строчки, но если там, к примеру, 10 строк, то ничего не возвращает (что логично).

Реализация сейчас:
X++:
void execute(str _bookmark)
{
    COM     currentRange, currentRange1;
    COMVariant      rowHeightVariant;
    real    rowHeight;
    int     rowsNumber, row;
    int     i;

    currentRange  = mapSection.lookup(_bookmark);
    currentRange1 = currentRange.rows();
    
    //row          = currentRange.row();
    rowsNumber   = currentRange1.count();
 
    rowHeightVariant = currentRange1.RowHeight();
    rowHeight        = rowHeightVariant.double();

    this.fillData(_bookmark);

    document.insertBookmarkAfterRow(currentRange,currentRow);
    currentHeight   += rowHeight;
    currentRow      += rowsNumber;
}
наверное, надо как-то пройти по всем строчкам, которые заключены в currentRange1 и считать их высоту, но не знаю, как это сделать.
Старый 12.11.2016, 00:00   #2  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
305 / 873 (30) +++++++
Регистрация: 23.10.2012
Добрый день!
Зачем это нужно, на листы делите? Что необходимо получить в конечном результате?
Сделать это можно, например, через
X++:
ComExcelDocument_RU.findRange
в цикле. Так понимаю, mapSection его и содержит, вопрос только в bookmark, передавать не диапазон.

Последний раз редактировалось Товарищ ♂uatr; 12.11.2016 в 01:06.
Старый 14.11.2016, 10:12   #3  
Artikov is offline
Artikov
Участник
 
33 / 12 (1) ++
Регистрация: 06.06.2016
Цитата:
Сообщение от Товарищ ♂uatr Посмотреть сообщение
Добрый день!
Зачем это нужно, на листы делите? Что необходимо получить в конечном результате?
Сделать это можно, например, через
X++:
ComExcelDocument_RU.findRange
в цикле. Так понимаю, mapSection его и содержит, вопрос только в bookmark, передавать не диапазон.
Добрый день!

Да, хочу делить отчет на листы и нужно знать, когда высота превышает допустимую величину. Сейчас попробую это реализовать, спасибо.
Старый 14.11.2016, 15:53   #4  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
COM Excel умеет сам разбивать на листы, там надо какое то свойство выставить, что то вроде pagebreak = auto или вроде того, задать параметры печати - А4 и т.п. Дальше можно посмотреть куда ексель вставил pageBreak и вставить туда PageFooter и PageHeader. Если не ошибаюсь, пример использования можно посмотреть в AX2009 в отчётах по ОСам - МБ-2, МБ-4 - RassetReport семейство классов в общем. В случае OpenXML эти значения взять неоткуда - там приложения нет которое всё само корректно посчитает, поэтому и приходится считать самому - такое ощущение что Вы переписываете OpenXML под COM, очень код напоминает. Интересно было бы узнать зачем.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
atinkerersnotebook: Using Service Management to Track Service Orders Blog bot DAX Blogs 1 25.08.2013 19:16
atinkerersnotebook: Using Excel to Import Products & Services in Dynamics AX Blog bot DAX Blogs 0 19.07.2013 15:11
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
Построчный импорт из Excel через COM olesh DAX: Программирование 20 23.10.2008 14:01

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

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

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