功能需求
由于excel数据较多,电脑显示器使用100%比例显示不全,想在生成excel时缩小其显示比例来使用一页显示全部数据,
经历
在百度找来找去都没有该方法的示例,但是觉得这么重要的属性openpyxl 肯定是有实现的,于是就去搜索源码
- 尝试了几个关键字,发现zoomScale搜索到的信息比较符合
- 然后顺藤摸瓜找到worksheet里的属性views 与worksheet.views里的类SheetView中的属性zoomScale相关,然后就可以开始尝试赋值去测试了
SheetViewList的源码就包含了SheetView
class SheetViewList(Serialisable):
tagname = "sheetViews"
sheetView = Sequence(expected_type=SheetView, )
extLst = Typed(expected_type=ExtensionList, allow_none=True)
__elements__ = ('sheetView',)
def __init__(self,
sheetView=None,
extLst=None,
):
if sheetView is None:
sheetView = [SheetView()]
self.sheetView = sheetView
- 简单的尝试了几次之后就实现了该功能
from openpyxl import load_workbook
excel = load_workbook("../demo.xlsx", data_only=False)
ws = excel.active
ws.views.sheetView[0].zoomScale = 50
excel.save("./test.xlsx")
备注: openpyxl 版本:3.0.3 python:3.7
openpyxl后续版本可能会直接提供设置缩放比例的属性方便使用