AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Old 12.04.2012, 15:29   #1  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Join Date: 27.10.2011
Экспорт в Excel, раздвигание строк
Может кто решал эту задачу..

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

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

Где-то была тема где было описано как вызывать макросы в Excel книге, но это крайний вариант, так как Excel у пользователей может быть разный и по разному реагировать на макросы...
Old 12.04.2012, 16:13   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by alvares View Post
напрямую через COM не знаю с чего подступиться
Пару вопросов по отчетам Excel
Quote:
Originally Posted by Владимир Максимов View Post
Чтобы уточнить синтаксис какой-либо команды непосредственно в Excel, используют встроенный в Excel макрорекодер. Т.е. запись всех действий пользователя, совершаемых в Excel. Пункт меню Сервис -> Макрос -> Начать запись.

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

В макросе написано:
X++:
Rows("14:14").Select
Selection.Insert Shift:=xlDown
С Range понятно, выделить диапазон можно и через SysExcelApplication, а как быть с Selection.Insert?
Old 12.04.2012, 17:23   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by alvares View Post
как быть с Selection.Insert?
Как-то так.
X++:
COM Selection;
#define.xlDown(-4121)
;

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

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);
    }

Last edited by AxPr-r; 16.04.2012 at 12:47.
Old 16.04.2012, 15:07   #8  
Gustav is offline
Gustav
Moderator
Gustav's Avatar
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Join Date: 24.01.2006
Location: Санкт-Петербург
Blog Entries: 19
Quote:
Originally Posted by AxPr-r View Post
я решил так, думаю смысл понятен
Смысл почти понятен, и по мере его понимания возникает вопрос к топикстартеру, что же он всё-таки имел в виду под "раздвиганием строк" - добавление новых строк или увеличение высоты имеющихся?
Old 16.04.2012, 15:56   #9  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Join Date: 27.10.2011
Задача была такая - вставить в середину сложного шаблона несколько строк из документа.
Соответственно, строк может быть несколько и заранее мы не знаем сколько, чтобы под это дело зарезервировать место в шаблоне...
Поэтому и нужно было раздвинуть
Old 16.04.2012, 16:08   #10  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Join Date: 27.10.2011
Quote:
Originally Posted by S.Kuskov View Post
Как-то так.
X++:
COM Selection;
#define.xlDown(-4121)
;

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

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Удаление группы строк из 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
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 02:53.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.