xlwt - Как добавить разрывы страниц в файл Excel? - PullRequest
4 голосов
/ 21 декабря 2011

Я пытаюсь добавить разрывы страниц при каждом изменении значения столбца в Excel с использованием Python и xlwt .

Кто-нибудь знает, как это сделать?

Я нашел один пример , но они на самом деле не говорят, работает ли их код, и они не говорят, что означают числа в кортеже:

ws.horz_page_breaks = [(54, 0, 255), (108, 0, 255)]

Ответы [ 2 ]

5 голосов
/ 30 декабря 2011

Проводя веб-исследование, я обнаружил этот документ OpenOffice.org , описывающий формат Excel и записи BIFF.Кажется, для горизонтальных разрывов (стр. 181) каждый кортеж представляет:

  • Индекс для первой строки НИЖЕ разрыва страницы
  • Индекс для первого столбца разрыва страницы
  • Указатель на последний столбец разрыва страницы

Итак, для примера, показанного в вопросе, у вас есть два разрыва страницы, один над строкой 54, а другой над строкой 108, оба из нихот столбца 0 до столбца 255.

То же самое относится к вертикальным разрывам;просто поменяйте местами строку и столбец в предыдущем описании.

2 голосов
/ 30 декабря 2011

Копаясь в исходном коде xlwt, оказывается, {vert,horiz}_page_breaks - это свойства (см. Worksheet.py в исходном дистрибутиве), которые в итоге передаются в BIFFRecords.{Vertical,Horizontal}PageBreaksRecord (см. BIFFRecords.py). Последние два класса документированы . Вот документы для них, если вы найдете их полезными:

class HorizontalPageBreaksRecord(BiffRecord):
    """  
    This  record  is  part  of  the  Page  Settings  Block. It contains all
    horizontal manual page breaks.

    Record HORIZONTALPAGEBREAKS, BIFF8:
    Offset  Size  Contents
    0       2     Number of following row index structures (nm)
    2       6nm   List of nm row index structures. Each row index
                  structure contains:
                    Offset  Size    Contents
                    0       2       Index to first row below the page break
                    2       2       Index to first column of this page break
                    4       2       Index to last column of this page break

    The row indexes in the lists must be ordered ascending.
    If in BIFF8 a row contains several page breaks, they must be ordered
    ascending by start column index.
    """

class VerticalPageBreaksRecord(BiffRecord):
    """  
    This  record  is  part  of  the  Page  Settings  Block. It contains all
    vertical manual page breaks.

    Record VERTICALPAGEBREAKS, BIFF8:
    Offset  Size  Contents
    0       2     Number of following column index structures (nm)
    2       6nm   List of nm column index structures. Each column index
                  structure contains:
                    Offset  Size    Contents
                    0       2       Index to first column following the page
                                    break
                    2       2       Index to first row of this page break
                    4       2       Index to last row of this page break

    The column indexes in the lists must be ordered ascending.
    If in BIFF8 a column contains several page breaks, they must be ordered
    ascending by start row index.
    """
...