为什么我无法在pandas为我创建的xlsxwriter对象上冻结窗格?
我有一个类,这个类的对象里包含了 pandas 数据框(self.before 和 self.after),还有一个 save() 方法,用来用 xlsxwriter 导出数据(这个数据有两个工作表,分别是“before”和“after”)。我想要 冻结窗格(之后我还想用 条件格式化)。
虽然我知道你 不能改变已经写入的单元格样式,但这两个操作是在工作表层面进行的,所以应该可以在之后设置。
这是代码:
def save():
writer = pd.ExcelWriter(self.path, engine='xlsxwriter')
self.before.to_excel(writer, "before")
self.after.to_excel(writer, "after")
for sht_name in writer.sheets:
ws = writer.sheets[sht_name]
ws.freeze_panes=(2,0)
writer.save()
保存的工作表的窗格并没有被冻结。我在使用 xlsxwriter(不使用 pandas)时成功地用了这个方法,并且我是按照 这个 pandas-charts 文档 的思路来做的,它似乎只是从写入对象中获取底层的 xlsxwriter 对象并对其进行操作。
你有什么想法,为什么我在这里没有得到想要的结果吗?
如果出于某种原因这无法实现,我当然可以从数据框中单独获取表格的值,但乍一看这似乎有点过于复杂。
1 个回答
10
好的,经过一番自我折磨我终于找到了问题所在:
正确的写法是:
ws.freeze_panes(2,0)
我当时是在设置一个(新的)属性(可能是覆盖了方法),而不是在调用工作表对象的方法。
一旦我纠正了这个问题,它就正常工作了。
很高兴这个解决方案这么简单……