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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.03.2008, 16:59   #1  
xenikk is offline
xenikk
Axapta Retail User
Аватар для xenikk
Axapta Retail User
 
30 / 10 (1) +
Регистрация: 20.06.2007
Адрес: Moscow
"Красивости" Excel
Всем доброго вечера. И хотя пятница, мучаюсь вопросом, прошу вашей помощи.

Есть класс кот. наследуется от comExcelDocument_RU.
Открывается excel, подсовывается шаблон & в него вставляются данные из буффера обмена (класс ParseBuffer). Так вот выводит моментально (~15 сек = 60 000 int строк).
Но вопрос в следующем, как вставить программно точки обрыва страницы, чтобы выводить подписи, а потом след документ/страница, и сново шапка, след. строки, подписи..
Никак не пойму, как сделать.

Или как в Axapta подготавливать 3 места печати - header, lines, footer (epilog) ?
Но тогда как быть с шаблоном?

Или же все таки - считать сколько строк должно быть на странице, вычитать шапку, эпилог, а потом каждый раз копировать шапку?
__________________
Романтик..
Старый 28.03.2008, 17:35   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Единственное, что я видел: вручную добавлять объекты HPageBreak Object в том месте, где должен был быть разрыв страницы. Соответственно после вставки каждой строчки требуется вычислять, не превышел ли размер страницы и зафигачивать футер.
Старый 28.03.2008, 17:42   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Соответственно после вставки каждой строчки требуется вычислять, не превышел ли размер страницы и зафигачивать футер.
См. также совет про навижин.
http://subscribe.ru/archive/tech.nav.../17211824.html
но принцип работы с Экселем одинаковый.

Там советуют
Цитата:
4) когда вы формируете многостраничный документ с форматированием, не вставляйте разрывы страниц по мере формирования документа. Лучше записывайте номера строк, где это надо сделать, во временную таблицу, и УЖЕ ПОСЛЕ ФОРМИРОВАНИЯ документа запускайте отдельную функцию, которая расставит разрывы в нужных местах. Экономия времени коллоссальная.
__________________
полезное на axForum, github, vk, coub.
Старый 28.03.2008, 17:44   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от xenikk Посмотреть сообщение
Но вопрос в следующем, как вставить программно точки обрыва страницы, чтобы выводить подписи, а потом след документ/страница, и сново шапка, след. строки, подписи..
Никак не пойму, как сделать.
Я бы подписи затолкал в footer настройками параметров таблицы и вообще бы не заморачивался "вставкой программно".
__________________
полезное на axForum, github, vk, coub.
Старый 28.03.2008, 17:47   #5  
xenikk is offline
xenikk
Axapta Retail User
Аватар для xenikk
Axapta Retail User
 
30 / 10 (1) +
Регистрация: 20.06.2007
Адрес: Moscow
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я бы подписи затолкал в footer настройками параметров таблицы и вообще бы не заморачивался "вставкой программно".
Поясните, не понял.
__________________
Романтик..
Старый 28.03.2008, 17:49   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А почему в шаблоне не можете настроить сквозные стороки для шапки и футер для подписей?
__________________
Axapta v.3.0 sp5 kr2
Старый 28.03.2008, 17:54   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от xenikk Посмотреть сообщение
Поясните, не понял.
см. скриншоты
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 500
Размер:	178.7 Кб
ID:	3328   Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 523
Размер:	97.0 Кб
ID:	3329  

__________________
полезное на axForum, github, vk, coub.
Старый 28.03.2008, 18:06   #8  
xenikk is offline
xenikk
Axapta Retail User
Аватар для xenikk
Axapta Retail User
 
30 / 10 (1) +
Регистрация: 20.06.2007
Адрес: Moscow
оО не знал =) а где в 2003 это делается?
__________________
Романтик..
Старый 28.03.2008, 18:10   #9  
xenikk is offline
xenikk
Axapta Retail User
Аватар для xenikk
Axapta Retail User
 
30 / 10 (1) +
Регистрация: 20.06.2007
Адрес: Moscow
Параметры страницы- колонтитулы - вы это имеете ввиду?
__________________
Романтик..
Старый 28.03.2008, 18:11   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Ну туда можно вставить текст и рисунки а вто табличку туда не вставишь (причем выровненную по листу)
Старый 29.03.2008, 20:47   #11  
xenikk is offline
xenikk
Axapta Retail User
Аватар для xenikk
Axapta Retail User
 
30 / 10 (1) +
Регистрация: 20.06.2007
Адрес: Moscow
Все равно не пойму, как сделать чтоб в швблоне печататлись только там где укажу строчки, а если строк больше то еще раз открывался шаблон...
__________________
Романтик..
Старый 31.03.2008, 10:31   #12  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Если разрывы страниц и итоги на странице должны зависить от устройств вывода, лучше смотреть в сторону реализации подсчета итогов, вывода заголовков, разрывов страниц и прочего в самом шаблоне в функции Workbook_BeforePrint.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 31.03.2008, 12:49   #13  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
С шапкой на каждой странице все просто. Пункт меню: Файл - Параметры страницы - закладка Лист - раздел "Печатать на каждой странице" - Сквозные строки

Указанные здесь строки будут печататься как заголовки на каждой новой странице. На первой странице они будут печататься как есть. Т.е. до них может быть отображен заголовок всего файла.
Старый 17.04.2013, 16:45   #14  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,509 / 432 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Подниму тем, ибо объявилась проблема аналогичного характера.
Дано - есть лист Экселя, в котором некоторые строки объединены. Лист большой, поэтому при печати получается несколько страниц.
Задача - сделать так, чтобы границы этих страниц не попадали внутрь объединённых блоков.
Например, объединены строки 11,12,13, Эксель по умолчанию провёл границу между страницами между строками 11 и 12, надо сдвинуть границу вниз на "между 13 и 14" (ну или вверх - это несущественно).

Танцы с бубном вокруг HPageBreak результата не дали. Т.е. я нахожу границу, знаю насколько двигать, но само смещение выполнить не могу.

Кто-нибудь решал подобную задачу?
__________________
С уважением,
Вячеслав
Старый 17.04.2013, 22:37   #15  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
http://office.microsoft.com/ru-ru/ex...102576899.aspx
Цитата:
Разрывы страниц, вставленные приложением Excel автоматически (отображаются пунктирной линией), нельзя удалить, а добавленные вручную (отображаются сплошной линией) — можно
Раз нельзя удалять, то скорее всего и просто перемещать автоматически расставленными разрывами строк нельзя.

Цитата:
Сообщение от pitersky Посмотреть сообщение
Например, объединены строки 11,12,13, Эксель по умолчанию провёл границу между страницами между строками 11 и 12, надо сдвинуть границу вниз на "между 13 и 14" (ну или вверх - это несущественно).
Если не существенно, то в вашем примере можно принудительно вставить разрыв между 10 и 11 строкой. Разрыв вставленный по умолчанию между 11 и 12 строкой не сместится автоматически дальше, отступив страницу от вновь созданного разрыва?

Если трюк со вставкой дополнительного разрыва не сработает, то есть ещё идея. Вместо смещения самих границ смещать данные, вставляя пустые строки или увеличивая высоту у уже вставленных.
Старый 17.04.2013, 22:56   #16  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,509 / 432 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Мне, собственно, и не надо удалять разрывы. Мне надо их сдвинуть в нужное место. Т.е. задать для разрыва Х строку У как лежащую под ним. Как это делает макрос (если его записать в Ёкселе). Именно это и не получается(((((((

За идеи спасибо, но по разным причинам это неприемлемо. Надо именно сдвинуть разрывы.
__________________
С уважением,
Вячеслав
Старый 18.04.2013, 08:18   #17  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от pitersky Посмотреть сообщение
это делает макрос (если его записать в Ёкселе)
А что за макрос?

У себя проверил. В случае если атоматический разрыв страницы попал на объединённую область, то после вставки ручного разрыва страницы перед объединённой областью все нижестоящие автоматические разрывы пересчитываются и смещаются ниже на размер страницы. В результате объединённая область полностью оказывается на следующем листе. Вам разве не это нужно?

Ещё. Перемещать автоматические разрывы видимо всё-таки можно:
http://office.microsoft.com/ru-ru/ex...010358284.aspx
Цитата:
Чтобы переопределить автоматические разрывы страниц, вставляемые приложением Excel, можно вставить собственные разрывы страниц вручную, переместить или удалить их.
...
При перемещении автоматического разрыва страницы он становится вставленным вручную.
От себя добавлю, что при смещении автоматического разрыва вниз, происходит увеличении размера страницы, причём не только той, которую мы растягиваем, но и всех остальных. Происходит перераспределение всех автоматических разрывов не только с учётом одной смещённой границы, но и с учётом уже нового увеличенного размера страниц. Интересно, что если потом вернуть разрыв на место, то автоматическое уменьшение размера страниц не происходит, они запоминают свой максимальный размер.

P.S.: Как добиться того чтобы автоматические разрывы автоматически не попадали на объединённые области - неизвестно
Старый 18.04.2013, 08:22   #18  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от pitersky Посмотреть сообщение
задать для разрыва Х строку У как лежащую под ним.
http://citforum.ru/programming/windo...rt2.shtml#2.20
Цитата:
вы можете "переместить" разрыв, присвоив новое значение свойству Location объекта HPageBreak
Старый 18.04.2013, 09:20   #19  
virhundo is offline
virhundo
Участник
 
33 / 16 (1) ++
Регистрация: 29.03.2007
To pitersky:
Слава, у меня была проблема,я думаю чем-то похожая на твою : нельзя было отрывать итоги от данных и переносить последний блок с данными на последнюю страницу.
В тройке делал так :
после добавления блока считал количество разрывов
X++:
anyType getHPageBreakCount(int _workSheet = 1)
{
    COM    comWorkSheet, comHPageBreak;
    COM    pageBreakRange;
    int    totalPageBreakCount;
    ;
    comWorkSheet = this.getWorkSheet(_workSheet);
    comHPageBreak = comWorkSheet.hPageBreaks();
    return comHPageBreak.count();
}
если появился новый разрыв - вставляем разрыв перед последним добавленным блоком
X++:
if(curentNumberPageBreak!=document.getHPageBreakCount(1))
{
    document.insertPageBreakBeforeRow(StartLineRow,1); //переносим  строки на новый лист
    curentNumberPageBreak = document.getHPageBreakCount(1);
X++:
#define.xlPageBreakManual(-4135)
public void insertPageBreakBeforeRow(int _row, int _workSheet = 1)
{
   COM        comRows,
                   comWorkSheet,
                   comRow;
    COMVariant  comRowVariant;
    ;
    comWorkSheet  = this.getWorkSheet(_workSheet);
    comRows       = comWorkSheet.rows();
    comRowVariant = comRows.item(_row);
    comRow        = COM::createFromVariant(comRowVariant);
    comRow.pageBreak(#xlPageBreakManual);
}
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 18.04.2013, 14:10   #20  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,509 / 432 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Попробовал. Не получилось(((((( Дефолтные разрывы остались на месте
__________________
С уважением,
Вячеслав
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Красивости excel- кнопка fialka DAX: Программирование 4 08.07.2008 15:17
"Лишние" строки в Excel fur-lined DAX: Программирование 3 24.08.2007 14:14
Проект "Движок отчётов с поддержкой Excel" Alks DAX: База знаний и проекты 6 07.01.2005 02:53
Экспорт в Excel - поле формата "Дата" Ned DAX: Программирование 15 25.04.2003 10:01
"Такая строка уже сущ." при переносе из Excel! Zelenhof DAX: Программирование 2 13.01.2003 13:41

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

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

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