openpyxl页面设置"适合" vs"调整为"

时间:2015-05-14 17:27:24

标签: python excel python-2.7 openpyxl

我尝试将我的工作表设置为使用openpyxl自动适合一个页面上的所有列。我接近这个的方法是设置fitToWidth属性和fitToHeight属性。到目前为止,我可以修改页面设置,使fitToWidth值为1,fitToHeight值为0但是当我打开电子表格时,它仍然在"调整为"选择而不是"适合"选择fitToWidth和fitToHeight值的选择。如何在页面设置中将该选择更改为"适合"而不是"调整为"?

我认为PageSetup.zoom属性需要为False,但我无法弄清楚如何使用openpyxl。以下是关于它的MSDN文章:https://msdn.microsoft.com/en-us/library/office/ff197028.aspx

到目前为止,这是我的代码:

from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
ws.page_setup.orientation = ws.ORIENTATION_LANDSCAPE
ws.page_setup.fitToWidth = 1
ws.page_setup.fitToHeight = 0
ws.sheet_view.view = "pageLayout"

谢谢!

2 个答案:

答案 0 :(得分:8)

以下适用于我:

import openpyxl, os

f = r'test.xlsx'
wb = openpyxl.load_workbook(f)
ws = wb.active

ws.sheet_properties.pageSetUpPr.fitToPage = True
ws.page_setup.fitToHeight = False

wb.save(f)

当然,如果您想将高度调整到一个页面并且不关心页面宽度,那么您将替换

ws.page_setup.fitToHeight = False

ws.page_setup.fitToWidth = False

如果您希望将整个工作表放在一个页面上,请完全删除ws.page_setup...行。

如果您希望高度/宽度适合,例如3页,请使用:

ws.page_setup.fitToWidth = 3

但是,我努力的关键因素是你必须在设置fitToHeight和/或fitToWidth属性之前设置ws.sheet_properties.pageSetUpPr.fitToPage = True

您无需明确设置比例百分比。这将取消此处的设置。

答案 1 :(得分:0)

openpyxl实现了文件规范,该规范可能与任何特定SDK提供的内容不同。这是指scale。参见ECMA 476规范的第18.3.1.64节。例如。 ws.page_setup.scale = 400应该有用。

值得注意的是,显示和打印的各种选项在文件中有点违反直觉。