版本号2.5.8中的openpyxl - col_idx,column,column_letter

问题描述 投票:0回答:1

有数千行使用openpyxl的代码,我们更新了openpyxl(版本2.6.2),看来影响向后兼容性的更改错过了文档。

  1. 有人(查理吗?)请确认.column - 以前返回一封信 - 现在返回一个数字,并且必须使用新方法.column_letter来返回这封信? (我是否从文档中正确理解了?)
  2. 在新版本中,.column.col_idx返回的内容之间是否存在任何差异? (这些基本上是返回相同的东西,还是一个从零开始而另一个基于一个?或者......?)
  3. 要更新我们的代码,如果我们只是用.column搜索/替换.column_letter(期望列的字母) - 还有什么需要注意的吗? (对于E.G.,.column_letter返回的集合是否会完全抵消,或者与旧的.column完全相同?)
openpyxl
1个回答
0
投票

是的,OpenPyXL 2.6+中有一些重大变化,不知何故错过了足够的文档。

需要注意的更大变化 - 因为它也会影响.column / .column_letter方法 - 是.merge_cells的功能。

在合并范围内的单元格上不再可以使用.column_letter.col_idx - 您必须使用.column(用于数字)或get_column_letter(cell)方法用于输入字母。 (请注意,您必须从utils导入方法get_column_letter

from openpyxl.utils import get_column_letter

现在,回答您的具体问题:

1)是的,你现在必须使用.column_letter(不再是.column)来获得专栏信 - 但如上所述,使用get_column_letter(cell)更安全。是的,.column现在将返回一个数字,而不是一个字母。

2)是的,.column现在返回一个数字,就像.col_idx一样。事实上,我建议不再使用.col_idx,因为它不再适用于合并单元格范围内的单元格。

3)由于处理合并的细胞范围的变化,用.column而不是get_column_letter(cell)替换.column_letter。所以简单的搜索/替换是不可取的。然而,在合并的单元格之外,.column_letter现在返回.column曾经做过的事情。

© www.soinside.com 2019 - 2024. All rights reserved.