import openpyxl
wb = openpyxl.load_workbook('man.xlsx')
sheet = wb.active
sheet.freeze_panes = 'A2'
wb.save('changetest.xlsx')
其实这是一个很简单的应用,但是可能出现的问题会让我们很意外。
这个程序看上去没有问题,但是实际运行过程中却出了一点小意外。
按理应该冻结第一行,可是运行结果显示的却是“181行”,很让我纳闷。
请教了一些前辈,他们都说没有问题。
后来我尝试了一下,点击第一行看看,是否是格式问题,一看格式是文本格式,然后我就修改成常规,保存后,再次运行,这下成功了。为此我还自鸣得意了一番。
可是,真的是真个问题吗?我又重新打开原本的文件(没有修改过),发现一个问题,打开后第一行显示的是181行,我又反复关掉原文件又打开,始终开头显示的181行,这下找到问题的关键了。我把文件拖到开头,然后保存了一下。再次运行,结果你懂得,成功了。
原来不是单元格的格式问题,是工作簿的问题,excel可能就是这么设置的,如果是已经存在的文件,再次打开显示的是上次修改保存后关掉的位置,而python也是直接把打开后的工作表,显示出来的第一行当作是工作表的第一行,其实未必。
所以下次运行冻结窗格的时候,看看需要操作的工作表的第一行是否是打开后显示的第一行。