【问题标题】:Changing default page breaks in xls-file via Python module xlwt通过 Python 模块 xlwt 更改 xls 文件中的默认分页符
【发布时间】:2014-04-23 06:53:47
【问题描述】:

我正在尝试使用 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')

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

谁能解释我做错了什么或如何进行严格的分页符?

附:有人建议我查看 openpyxl 库,但没有找到任何文档或示例如何设置分页符。

更新: 我发现的一些附加信息。 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 手动进行自动分页,那真的很有帮助。

【问题讨论】:

    标签: python excel xlwt


    【解决方案1】:

    经过几个月的研究(这不是一个紧迫的问题),我找到了使用 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。因此,您可以使用列。

    附:我已经为 xlsxwriter 更改了 xlwt,因为我需要图表和 xlwt 不提供的其他一些功能,此外 XlsxWriter 具有出色的文档。但这并不意味着 xlwt 不好。我猜 xlwt 有类似于 print_area()、set_paper() 和 fit_to_pages() 的东西

    附言如果我的回答得到了赞成或没有出现更好的东西,我会用绿色勾号标记

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2020-05-31
      相关资源
      最近更新 更多