通过Python模块xlwt更改xls文件中的默认分页符

时间:2014-04-23 06:53:47

标签: python excel xlwt

我正在尝试使用Python模块xlwt编辑分页符。 (是的,我发现了一个非常相似的问题xlwt - How to add page breaks to an Excel File?,但它并没有完全解决问题)

以下是一些不符合我预期的代码:

import xlwt

wb = xlwt.Workbook()
ws = wb.add_sheet('Report')
ws.write(0,0, '0 here')
ws.write(43,12, '12 here')
ws.horz_page_breaks = [(44,0,12),]
wb.save('sample.xls')

它确实创建了行分页符,但列似乎有一个默认的分页符(从第10页的' K'列开始)。

有人可以解释我做错了什么或如何严格分页?

P.S。我被建议查看openpyxl库但是没有找到任何文档或示例如何设置分页符。

UPD: 我发现的一些其他信息。 Excel中有一个自动分页符,无法删除(如http://office.microsoft.com/en-au/excel-help/insert-move-or-delete-page-breaks-in-a-worksheet-HP010021539.aspx所述),但只能通过拖动转换为手动分页符。 使用worksheet.vert_page_break我可以设置一个较小的(比自动)垂直分页符。但这并没有解决我的问题。

如果有办法使用xlwt制作自动分页功能手册,那将非常有帮助。

1 个答案:

答案 0 :(得分:3)

经过数月的研究(这不是一个紧急问题)我找到了一个使用xlsxwriter的解决方案。看看page setup。它没有应有的那么好,但它提供了一种处理分页符的方法。下面的代码更改了工作表的默认分页符:

import xlsxwriter
import random
wb = xlsxwriter.Workbook('page_breaks.xlsx')
ws = wb.add_worksheet('Sample page')

headers = ['header1', 'header2']
# set headers
for col, header in enumerate(headers):
    ws.write(0+1, col+1, 'header'+str(col))

# let it be 300 rows of data
for row in xrange(2,302):
    ws.write(row, 1, row)

# fill table with some random data
for _ in xrange(3000):
    row = random.randrange(2, 302)
    col = random.randrange(2, 16)
    ws.write(row, col, 'X')

# print_area(), set_paper() and fit_to_pages() do the trick
ws.print_area(1, 1, 301, 15)
ws.set_paper(9)  # set A4 as page format
pages_horz = 1
pages_vert = 4
ws.fit_to_pages(pages_horz, pages_vert)

wb.close()

如果你想在页面上有一定数量的行,你应该处理行高,然后根据它选择 parges_vert 。所以你使用列。

P.S。我已经为xlsxwriter更改了xlwt,因为我需要xlwt不提供的图表和一些其他功能,XlsxWriter还有很好的文档。但这并不意味着xlwt是坏的。我猜xlwt有类似于print_area(),set_paper()和fit_to_pages()

P.P.S。如果我的答案得到了回报,或者没有出现更好的东西,我会用绿色标记来标记