一身腱子肉 发表于 2021-10-9 14:24:48

python3使用xlwings模块如何冻结excel窗口?

使用xlwings模块操作Excel,在一个工作簿中添加了多个sheet表,如何指定其中一个sheet,冻结其前几行和前几列(如:前2行和前3列)呢?

suchocolate 发表于 2021-10-9 14:30:37

没用过,网上搜的。
https://zhuanlan.zhihu.com/p/346880283

一身腱子肉 发表于 2021-10-13 10:03:04

suchocolate 发表于 2021-10-9 14:30
没用过,网上搜的。
https://zhuanlan.zhihu.com/p/346880283

网上只能搜到这个,但是不知道能冻结哪个sheet,想弄明白其中参数设置

suchocolate 发表于 2021-10-13 12:19:04

本帖最后由 suchocolate 于 2021-10-13 13:36 编辑

一身腱子肉 发表于 2021-10-13 10:03
网上只能搜到这个,但是不知道能冻结哪个sheet,想弄明白其中参数设置

试试:
import xlwings as xw

wb = xw.Book('test3.xlsx')
wb.sheets['Sheet2'].select()
wb.sheets['Sheet2'].range('b2').select()
wa = wb.app.api.ActiveWindow
wa.FreezePanes = True
wb.save()
wb.close()


另外我看这个工具也是调用excel vba的api,那不如直接用excel vba就行了。Sub test()

    Sheets("Sheet2").Select
    Range("B2").Select
    ActiveWindow.FreezePanes = True
End Sub

一身腱子肉 发表于 2021-10-13 15:47:33

suchocolate 发表于 2021-10-13 12:19
试试:




可以诶!感谢大兄弟!就是通过vba的api实现的,原来select也是一种操作,我一直把它忽略了~~~
另外,我刚刚试了一下,跨表选中单元格会报错,必须先选中sheet,再选中其单元格
(这句不能省:wb.sheets['Sheet2'].select())
xlwings的一个优势就是能结合vba对excel进行操作,
但是有时候我录制宏之后,不知道在python里怎么写,是否区分大小写或者参数设置这些不太明白

suchocolate 发表于 2021-10-13 17:10:19

一身腱子肉 发表于 2021-10-13 15:47
可以诶!感谢大兄弟!就是通过vba的api实现的,原来select也是一种操作,我一直把它忽略了~~~
另外,我 ...

我看xlwings也提供python调用vba的操作,如果可以,我觉得可以把在python里操作麻烦的放到vba里,让python专门处理数据
页: [1]
查看完整版本: python3使用xlwings模块如何冻结excel窗口?