excel 如何在openpyxl中插入分页符

8yoxcaq7  于 2023-05-08  发布在  其他
关注(0)|答案(5)|浏览(185)

我在openpyxl的文档中看到它支持分页。我已经搜索了文档和谷歌,但我不知道如何手动插入分页符。当我在报告中更改年份时,我希望有新的一页。有人知道怎么做吗?

fumotvh3

fumotvh31#

2.6.2版本

@goocheeze回答正确除了...

ws.page_breaks.append(page_break)  # insert page break

应该是

ws.row_breaks.append(page_break)  # insert page break
l7wslrjt

l7wslrjt2#

你可以使用worksheet.page_breaks.append(page_break)来插入一个page_break,详情请参见openpyxl源代码。下面是一个例子:

from openpyxl import Workbook
from openpyxl.worksheet.pagebreak import Break

wb = Workbook()
ws = wb.active
row_number = 20  # the row that you want to insert page break
page_break = Break(id=row_number)  # create Break obj
ws.page_breaks.append(page_break)  # insert page break

不知道为什么作者用“id”这个名字来指代分页符的行号,用“row_number”可能会更好。

bgtovc5b

bgtovc5b3#

row_break = RowBreak()
row_break.append(Break(id=row_num))
worksheet.row_breaks = row_break
vawmfj5a

vawmfj5a4#

我把我的程序、Python和IDE搬到了一台新电脑上。我正在使用“ws.page_breaks.append(page_break)”,得到了一个关于无法附加元组的错误,尽管它在我的另一台计算机上工作正常。
我使用“try/ except”格式更改了代码,以允许“page_breaks/ row_breaks”。
我的解决方案如下:

try:
        ws_list[i].page_breaks.append(Break(id=oi))
    except:
        ws_list[i].row_breaks.append(Break(id=oi))
ehxuflar

ehxuflar5#

Thanks,@ A лександ р Дмитр и ев
下面是一个完整的工作示例,它向下扫描列A,查找年份何时更改,并在这些行之间插入分页符。

import openpyxl, os
from openpyxl.worksheet.pagebreak import Break, RowBreak
path = 'path to folder with file'
f = 'pb.xlsx'  # data file input is as follows
'''
A       B
------  ------
2020    a
2020    b
2021    c
2021    d
2022    e
2023    f
'''
wb = openpyxl.load_workbook(filename=os.path.join(path, f))
worksheet=wb.active
row_break = RowBreak()
for i in range(worksheet.max_row):
    r = i + 1
    A = worksheet['A%s'%r]._value
    if i and A != oldA:
        row_break.append(Break(id=i))  # i to insert before this row, r
    oldA = A

worksheet.row_breaks = row_break
wb.save(os.path.join(path,'so.xlsx'))
wb.close()

生成的电子表格在年份更改的行之间具有分页符:示例输入文件有4页。

相关问题