OpenPyXL爬坑_第二弹

这是一段平平无奇的代码,用于获取冻结单元格

1
2
3
4
5
6
7
8
9
import shutil
import openpyxl

path = "/Users/xxx/Documents/tmp/openPyXLTest.xlsx"

wb = openpyxl.load_workbook(path)
sheet = wb["Sheet"]
print(sheet.freeze_panes)
wb.close()

文件内容如下

执行效果如下

看上去一切正常

但是当文件滚动条变更之后,如图

它的执行结果就变成了

没错,只要滚动条滚动了,取出来的值就是不正确的。如同源码展示的,它只会取 topLeftCell ,而这个值只会在加载的时候初始化,所以冻结的单元格行数,并不能准确取到。

已提交issue,期待回复

https://foss.heptapod.net/openpyxl/openpyxl/-/issues/2119

回复结果:

应该使用sheet.sheet_view.pane.ySplit获取冻结行数

输出结果 3.0

作者

Etsu

发布于

2023-12-04

更新于

2023-12-09

许可协议

评论