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

时间:2019-04-11 20:31:00

标签: openpyxl

在使用openpyxl的数千行代码中,我们更新了openpyxl(版本为2.6.2),似乎影响向后兼容性的更改缺少文档。

  1. 有人(查理?)能否确认以前返回字母的.column现在返回数字,并且必须使用新方法.column_letter来返回字母? (我从文档中正确理解了吗?)

  2. 在新版本中,.column.col_idx返回的内容之间有什么区别吗? (这些基本返回的是相同的东西,还是一个从零开始而另一个从一个开始?还是...?)

  3. 要更新我们的代码,如果仅用.column搜索/替换.column_letter(期望列字母),还有其他需要注意的地方吗? (例如,.column_letter返回的col ltr是否会完全偏移,或与旧.column完全相同?)

1 个答案:

答案 0 :(得分:0)

是的,OpenPyXL 2.6+中有一些重大更改,以某种方式错过了足够的文档。

.column的功能是一个值得注意的更大变化,因为它也会影响.column_letter / .merge_cells方法。

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

get_column_letter

现在,回答您的特定问题:

1)是的,您现在必须使用from openpyxl.utils import get_column_letter (不再是.column_letter)来获取列字母-但是如上所述,使用.column是更安全的。是的,get_column_letter(cell)现在将返回一个数字,而不是字母。

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

3)由于合并单元格范围的处理方式发生变化,因此将.col_idx替换为.column而不是get_column_letter(cell)。因此,简单的搜索/替换是不可取的。但是,在合并的单元格之外,.column_letter现在返回.column_letter曾经做过的事情。