我尝试将我的工作表设置为使用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"
谢谢!
答案 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
应该有用。
值得注意的是,显示和打印的各种选项在文件中有点违反直觉。