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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.04.2012, 15:29   #1  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
Экспорт в Excel, раздвигание строк
Может кто решал эту задачу..

Есть задача экспортировать данные в Excel в определенный шаблон.
С самим механизмом экспорта проблем нет, но шаблон предусматривает отображение строк документа, после заголовка отчета. После строк должен идти подвал, с навороченным оформлением и посторонними графическими объектами (картинками).

Так вот, чтобы красиво выводить данные из строк документа не вижу никакого способа кроме как раздвигать строки (или есть еще варианты?).. SysExcelApplication вроде такого делать не умеет, а напрямую через COM не знаю с чего подступиться

Где-то была тема где было описано как вызывать макросы в Excel книге, но это крайний вариант, так как Excel у пользователей может быть разный и по разному реагировать на макросы...
Старый 12.04.2012, 16:13   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от alvares Посмотреть сообщение
напрямую через COM не знаю с чего подступиться
Пару вопросов по отчетам Excel
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Чтобы уточнить синтаксис какой-либо команды непосредственно в Excel, используют встроенный в Excel макрорекодер. Т.е. запись всех действий пользователя, совершаемых в Excel. Пункт меню Сервис -> Макрос -> Начать запись.

Выполняешь все необходимые действия, далее останавливаешь запись, открываешь макрос на редактирование и смотришь, какая именно команда была использована.
Старый 12.04.2012, 17:00   #3  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
А как передать эту команду из Х++ через COM?

В макросе написано:
X++:
Rows("14:14").Select
Selection.Insert Shift:=xlDown
С Range понятно, выделить диапазон можно и через SysExcelApplication, а как быть с Selection.Insert?
Старый 12.04.2012, 17:23   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от alvares Посмотреть сообщение
как быть с Selection.Insert?
Как-то так.
X++:
COM Selection;
#define.xlDown(-4121)
;

Selection = SysExcelApplication.findRange("14:14");
Selection.insert(#xlDown);
Пишу от руки. Нужно проверять...
За это сообщение автора поблагодарили: alvares (1).
Старый 12.04.2012, 17:24   #5  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
\Classes\ComExcelDocument_RU\insertRow
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 16.04.2012, 12:19   #6  
Corel is offline
Corel
Участник
Ex AND Project
 
73 / 15 (1) ++
Регистрация: 19.04.2007
Если не ошибаюсь, Excel сам может раздвигать строки, но при одном условии: ячейки не должны быть объединены. Если отчёт нарисован объединёнными "клеточками", то придётся извращаться.
Старый 16.04.2012, 12:40   #7  
AxPr-r is offline
AxPr-r
Участник
Axapta Retail User
 
44 / 11 (1) +
Регистрация: 13.03.2006
Цитата:
Сообщение от alvares Посмотреть сообщение
Может кто решал эту задачу..
я решил так, думаю смысл понятен

X++:
    str getBookMark(int _fromCol, int _fromRow, int _toCol, int _toRow)
    {
        return strFmt("%1:%2", ComExcelDocument_RU::numToNameCell(_fromCol, _fromRow), ComExcelDocument_RU::numToNameCell(_toCol, _toRow));
    }
    
    void setRowHeight(str _s, int _strLen, int _row)
    {
        if(strlen(_s) > _strLen)
        {
            rowHeight = strlen(_s) / _strLen + 1;
            rowHeight = 15 * rowHeight;
        }
        else
            rowHeight = #RowHeight;

        excellDocument.setRowHeight(getBookMark(1, _row, #endColumn, _row) ,rowHeight);
    }

Последний раз редактировалось AxPr-r; 16.04.2012 в 12:47.
Старый 16.04.2012, 15:07   #8  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от AxPr-r Посмотреть сообщение
я решил так, думаю смысл понятен
Смысл почти понятен, и по мере его понимания возникает вопрос к топикстартеру, что же он всё-таки имел в виду под "раздвиганием строк" - добавление новых строк или увеличение высоты имеющихся?
Старый 16.04.2012, 15:56   #9  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
Задача была такая - вставить в середину сложного шаблона несколько строк из документа.
Соответственно, строк может быть несколько и заранее мы не знаем сколько, чтобы под это дело зарезервировать место в шаблоне...
Поэтому и нужно было раздвинуть
Старый 16.04.2012, 16:08   #10  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Как-то так.
X++:
COM Selection;
#define.xlDown(-4121)
;

Selection = SysExcelApplication.findRange("14:14");
Selection.insert(#xlDown);
Пишу от руки. Нужно проверять...
Этот вариант отолично работает, спасибо!
Старый 16.04.2012, 17:42   #11  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
Где-то на форуме пробегал список Enumerations из Excel Object Model Reference,
X++:
...
#define.xlDown(-4121)
найти не могу, никто не напомнит?
Старый 16.04.2012, 17:47   #12  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
http://msdn.microsoft.com/en-us/library/ff193293.aspx
За это сообщение автора поблагодарили: alex55 (1).
Теги
ax2009, excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Удаление группы строк из Excel? Hidden DAX: Программирование 15 12.07.2010 18:03
Экспорт в Excel exodus DAX: Программирование 1 23.01.2008 09:35
Экспорт в Excel. Проблема с '\n' axaLearner DAX: Программирование 12 17.04.2006 18:43
Свертка строк при выводе из Аксапты в Excel Zabr DAX: Программирование 20 21.02.2006 15:21
Экспорт в Excel через WorkBooks.OpenText() Владимир Максимов DAX: Программирование 2 09.04.2004 17:16

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

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

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