为什么我不能在xlsxwriter对象上使用freeze_panes pandas为我创建?

时间:2014-08-24 20:35:28

标签: python pandas xlsxwriter

我有一个类,其对象包含pandas数据帧(self.before和self.after下面)和一个save()方法,它使用xlsxwriter导出数据(有两个工作表,“before”和“after”) 。我正在尝试freeze panes(之后也想使用conditional formatting。)

即使我认识你can't change the style of cells you've already written,这两个操作也会在工作表级别应用,因此应该可以在以后设置。

以下是代码:

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)时成功使用了该方法,并且我遵循this pandas-charts documentation的引导集,它似乎只是从writer对象中检索底层的xlsxwriter对象并对它们进行操作。

你有没有想过为什么我没有在这里得到这个结果的想法。

如果由于某种原因无法做到这一点,我当然可以从数据框中检索表格的各个值,但这看起来似乎过分了。

1 个答案:

答案 0 :(得分:5)

好的,经过多次自我折磨后发现它:

正确的语法是:

ws.freeze_panes(2,0)

我设置了一个(新)属性(可能覆盖了方法)而不是调用工作表对象的方法。

一旦我纠正了这个,它就有用了。

很高兴它就像简单的解决方案......