Предположим, у меня есть лист LibreOffice Calc, охватывающий несколько страниц в распечатке. Есть ли способ рассчитать промежуточный итог для каждой страницы и распечатать его внизу соответствующей страницы, а также вверху следующей страницы?

Я знаю, что можно использовать промежуточные итоги для автоматического вычисления промежуточных итогов, но "только" в зависимости от данных (например, даты, имена, номера деталей), но не просто для каждой страницы. Кроме того, рассчитанный промежуточный итог не появится на следующей странице.

1 ответ1

1

Значения ячеек, такие как итоги, могут быть помещены в верхний и / или нижний колонтитул с помощью макроса. Приведенный ниже макрос был создан Zizi64, Тибором Ковачем, для Open Office и скопирован из его таблицы Prestige2.ods по ссылке выше. Измените его для своих нужд.

Это было проверено в LibreOffice и работает. Конечно, вам нужно включить макросы в Параметры | Безопасность. В приведенном ниже примере вызов макроса EditFooterHeader() вставляет значение ячейки L1 в нижний колонтитул.

Вызов макроса EditFooterHeader

REM ***** BASIC *****

ОПЦИЯ EXPLICIT

Функция EditFooterText(WS_Index как целое число, MyFooterLeftText, MyFooterCenterText, MyFooterRightText как строка) как строка

Dim oDocument как Object Dim oSheet как объект Dim oPStyle как Object Dim oThisStyle как Object Dim oFContent как Object Dim oText как Object Dim oCursor как Object Dim oField как Object Dim i как целое число Dim StyleName как строка Dim sAns как строка

  rem Adjusting the actual pagestyle (Pagestyle of actual WorkSheet

в этом документе) oDocument = ThisComponent oSheet = oDocument.Sheets.getByIndex (WS_Index-1) oPStyle = oDocument.StyleFamilies.getByName ("PageStyles") oThisStyle = oPStyle.getByName (oSheet.PageStyle) StyleName = oThisStyle.название

    oThisStyle.FooterOn = True
    'Zizi64: False/True turns on/off the running foot

    oFContent = oThisStyle.RightPageFooterContent
    'Zizi64: Get the all text from running foot

«************************************************* ******* 'oText = oFContent.LeftText 'oCursor = oText.createTextCursor ()' oText.insertString (oCursor, "", True)

'oCursor.CharHeight = 12 'oCursor.CharFontName = "Arial" 'oCursor.CharWeight = com.sun.star.awt.FontWeight.НОРМАЛЬНЫЙ oCursor.CharPosture = com.sun.star.awt.FontSlant.NONE 'oCursor.CharUnderline = com.sun.star.awt.FontUnderline.НЕТ '' вставить текст ... 'oText.insertString (oCursor, MyFooterLeftText, False)' ****************************** **************************

'oText = oFContent.CenterText 'oCursor = oText.createTextCursor ()' oText.insertString (oCursor, "", True)

'oCursor.CharHeight = 12 'oCursor.CharFontName = "Courir New" 'oCursor.CharWeight = com.sun.star.awt.FontWeight.НОРМАЛЬНЫЙ oCursor.CharPosture = com.sun.star.awt.FontSlant.NONE 'oCursor.CharUnderline = com.sun.star.awt.FontUnderline.НИКТО

'oText.insertString (oCursor, MyFooterCenterText, False)' ************************************** ******************

    oText = oFContent.RightText

    oCursor = oText.createTextCursor()

    oText.insertString(oCursor, "", True)

    oCursor.CharHeight = 12
    oCursor.CharFontName = "Times New Roman"
    oCursor.CharWeight = com.sun.star.awt.FontWeight.NORMAL
    oCursor.CharPosture = com.sun.star.awt.FontSlant.NONE
    oCursor.CharUnderline = com.sun.star.awt.FontUnderline.NONE

    oText.insertString(oCursor, MyFooterRightText, False) '********************************************************  



    oThisStyle.RightPageFooterContent = oFContent      'write content back into running foot

          EditFooterText = StyleName & ": Style modified!:" End function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .