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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2005, 17:01   #1  
Plushy is offline
Plushy
Участник
 
11 / 11 (1) +
Регистрация: 08.11.2005
Разрыв страницы в Excel
Подскажите, пожалуйста, как из кода установить горизонтальный разрыв страницы в Excel в определенном месте (зная номер строки)

такой код:

COM ExcelApplication;
COM ActiveWindow;
COM SelectedSheets;
COM HPageBreaks;
COM ActiveCell;

//Надо чтобы к этому моменту уже был ExcelApplication

ActiveWindow = ExcelApplication.ActiveWindow();
SelectedSheets = ActiveWindow.SelectedSheets();
HPageBreaks = SelectedSheets.HPageBreaks();
ActiveCell = ExcelApplication.ActiveCell();
HPageBreaks.add(ActiveCell);

вставляет разрывы страницы с позиции курсора в шаблоне, на основе которого формируем файл (судя по всему ActiveCell - ячейка, где стоит курсор)

Определенно, нужно как то ActiveCell "сказать" какая она, но как?

Может быть у кого-то есть еще варианты...
Старый 05.12.2005, 17:20   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Что-то типа:
...
WorkBook = ExcelApplication.ActiveWorkBook;
WorkSheet = WorkBook.ActiveSheet();
ActiveCell = WorkSheet.Range('A30');
...
__________________
Андрей.

Последний раз редактировалось Dron AKA andy; 05.12.2005 в 17:23.
Старый 05.12.2005, 17:24   #3  
PavelM is offline
PavelM
Участник
 
27 / 10 (1) +
Регистрация: 20.01.2005
PHP код:
    workSheets excel.worksheets();
    
workSheet  workSheets.item('Лист1');
    
comRange  workSheet.Range('3:3');
    
hbreak workSheet.HPageBreaks();
    
hbreak.Add(comRange); 
Старый 05.12.2005, 17:52   #4  
Plushy is offline
Plushy
Участник
 
11 / 11 (1) +
Регистрация: 08.11.2005
А можно с описанием переменных?
Цитата:
Сообщение от PavelM
PHP код:
    workSheets excel.worksheets();
    
workSheet workSheets.item('Лист1');
    
comRange workSheet.Range('3:3');
    
hbreak workSheet.HPageBreaks();
    
hbreak.Add(comRange); 
А можно с описанием переменных?
Старый 05.12.2005, 17:59   #5  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Цитата:
Сообщение от Plushy
А можно с описанием переменных?
ComExcelDocument_RU.insertPageBreak()
Старый 06.12.2005, 10:32   #6  
Plushy is offline
Plushy
Участник
 
11 / 11 (1) +
Регистрация: 08.11.2005
Спасибо большое всем!
Цитата:
Сообщение от Lemming
ComExcelDocument_RU.insertPageBreak()
Все попробовала, все варианты работают.

Последний короче, соответственно его и выбираю (и как я не увидела этот метод в классе ).
Старый 08.12.2005, 16:16   #7  
Plushy is offline
Plushy
Участник
 
11 / 11 (1) +
Регистрация: 08.11.2005
Опять проблема :(

Разрыв страницы вставлять умею, но при печати документа все равно "красоты" не получается.
Документ имеет формат: ШАПКА, ТАБЛИЦА (с итоговыми строками), БЛОК ПОДПИСЕЙ

Для каждого документа задаем 3 параметра - количество строк в таблице на первой странице, количество на второй и далее, количество на последней (не более)

Нельзя переносить на последнюю страницу итоги и подписи отдельно, необходимо к ним прицепить хотя бы одну строчку из таблицы.

Соответственно, в таких ситуациях я вставляю разделитель страницы перед последней строчкой таблицы.
Т.Е. вроде бы цель достигнута
НО
Эксель считает, что последняя строка и итоговая строка влезает на первую страницу, поэтому ставит еще свой разделитель страниц и выкидывает подписи отдельно (что недопустимо!)

У меня получается:
шапка и все, кроме одной строки таблицы - разрыв страницы (МОЙ)
потом последняя строка таблицы и итоги - разрыв страницы ("сделано Экселем")
и все что осталось уже на последней странице

Кто-нибудь знает, как с этим бороться?
Старый 14.12.2005, 09:39   #8  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Абсолютно согласен с simply2double. Простой подсчет строк для разбивки страниц - очень уж ненадежный способ. Он обязательно сыграет с Вами злую шутку, как только потребуется динамически менять высоту строк, если выводимые данные перестанут влезать в одну строку.

Лично я делал примерно так: все разрывы, кроме последнего я отдавал "на откуп" Екселю, поскольку уж он-то лучше знает все свои параметры (высоту, поля и т.д.). А последний разрыв анализировал, а не разбил ли он мне Footer (тот самый блок подписей)? И не оторвал ли он мне последнюю строку от итогов? Или итоги от футера? Вобщем, если последний разрыв стоит не ДО ПОСЛЕДНЕЙ строки данных, то он меня не устраивает, и я вставляю принудительный разрыв именно ПЕРЕД ПОСЛЕДНЕЙ строкой.

При этом "родной" Екселевский разрыв благополучно исчезает сам! Честно говоря, не понимаю, почему у Вас этого не происходит... Только что проверил: даже при "ручном" редактировании Екселевской таблички все происходит очень корректно - при вставке принудит. разрыва, автоматический исчезает (или съезжает ниже, если "хвост" опять не помещается на странице.

Вот часть кода, который у меня обрабатывает последнюю страницу:
PHP код:
    int     pageBreakNum;
    
int     lastPageBreakRow 0;
    
int     pageBreakRow = -1;
    ;
    
lastLineRowNum      = ...// здесь определяем номер последней строки, 
 // которая должна обязательно попасть на посл. страницу
...    
// найдем последний разрыв страницы
    
for (pageBreakNum 1pageBreakRow != 0pageBreakNum++)
    {
        
lastPageBreakRow    pageBreakRow;
        
pageBreakRow        document.getHPageBreak(pageBreakNum);
    }

    if(
lastPageBreakRow lastLineRowNum)
    {
        
document.insertPageBreak(ComExcelDocument_RU::numToNameCell(1lastLineRowNum));
    }
... 
За это сообщение автора поблагодарили: Alte Fritz (1), ChD (1).
Теги
excel, высота строк отчета, законченный пример, подсчет строк, разрыв страницы

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Как определить конец страницы в Excel vasiliy DAX: Программирование 29 31.10.2007 09:27
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Параметры страницы Excel через COM Sada DAX: Программирование 3 18.05.2006 10:30

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

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

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