python版本不同导致的openpyxl操作结果不一样的问题


不同版本的python,对openpyxl库的操作,会有不同的结果。
品质部经常要出一些产品合格的报告。如果报告份数很多,比如200份,手工操作就很麻烦。
Python的自动化办公功能就会派上用场了。
最近一次,我在为同事编python办公自动化脚本的时候,遇到二个问题。
我们的报告,上面有要加一个公司的LOGO,这个LOGO是图片,用excel的插入对象的功能加到模版里的。

我最初的方案是:利用openpyxl的 copy_worksheet功能把这个模版复制,发现复制后的新sheet,里面的logo没有了。

过将LOGO设计到页眉的办法也不成功。
解决的办法:
最后就用先打开模版,然后把数据填好后,另存一个新文件。用这个办法,得到的文件,LOGO就在上面。
操作的办法如下,新文件就存在模版下面的一个“report”的文件夹里了。
wb = openpyxl.load_workbook(path+'模版.xlsx')
…………………………
wb.save(path+'report\\新文件.xlsx')
2.
按这个思路,把代码在我的电脑上调试好后,就可以在同事的电脑上用了(我同事之前没有用过python,要在电脑上安装python软件,就是从python官网上下载的python3.10.2,最新的python版本,同时把openpyxl也随手安装上了)。
把代码copy到同事电脑上,作好必要的路径修改后,运行起来,得到的新文件, LOGO没有了!!!
在同事电脑上,利用shutil.copy命令,把模版复制得到一个新的文件,打开文件,里面有LOGO.
但接下来利用openpyxl对这个新的文件操作,保存。检查文件,它的LOGO又不见了。
仅仅是换了一个电脑!!!
显然二部电脑之间有差异,且导致了这个不同的结果。
差异点在哪里呢?
通过检查二台电脑上openpyxl库的版本,发现版本不一样,我的电脑上是3.06,同事的电脑是3.0.9。【查库版本的方法,用pip list.】
利用pip install openpyxl==3.0.6,强行把同事电脑上的openpyxl库版本降下来,结果不行。
我电脑上是python3.9.2,同事的是python3.10.2,难道是这个原因导致?
将同事电脑上的pytho3.10.2卸载,然后到python官网上,找到3.9.2版本的。安装后运行代码, 成功!
结论:不同的python版本,运行同样的代码,结果会有区别。这在编程的时候应特别注意。
附如何在python官网上找之前的版本。
进入官网,如果下载就是最新版本的,点“downloads”,就会如下图。

在本页面中,往下看,就会有如下面的呈现。这里显示了所有的版本。找到我们想要的版本后,点download

在出现的新页面中,在最下部,会不同环境的下的软件清单,按自己的情况选用就可以了。
