Показать сообщение отдельно
Старый 14.12.2005, 09:39   #12  
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).