【问题标题】:Finding hidden cells using openpyxl使用 openpyxl 查找隐藏单元格
【发布时间】:2020-12-08 22:37:51
【问题描述】:

我一直在尝试编写一个脚本来将格式从一个工作簿复制到另一个工作簿,并且正如任何处理 openpyxl 的人都知道的那样,这是一个很大的脚本。我已经让它工作得很好,但我似乎无法弄清楚的一件事是如果隐藏列,如何从原始内容中读取。

谁能告诉我在工作簿、工作表、列或单元格对象中查看隐藏列的位置?

【问题讨论】:

    标签: python excel openpyxl


    【解决方案1】:

    您要查找的属性位于Worksheet 对象的column_dimensionsrow_dimensions 属性内。

    这些是绑定字典,其值为ColumnDimension/RowDimension 对象。您要查找的具体属性是ColumnDimension.hidden

    以下将打印工作表ws中所有隐藏列的列字母:

    for colLetter,colDimension in ws.column_dimensions.items():
      if colDimension.hidden == True:
         print(colLetter)
    

    对于行:

    for rowNum,rowDimension in ws.row_dimensions.items():
      if rowDimension.hidden == True:
         print(rowNum)
    

    据我了解,将工作簿加载为 read_only 可能会与 ws.row_dimensions 混淆,因此在这种情况下要小心。

    【讨论】:

    • 请您解释一下read_onlyws.row_dimensions 搞混是什么意思?软件包网站上是否有一些问题跟踪器对此进行了解释?
    • @gofvonx 抱歉,不,我不记得我在哪里读到的。我确实知道以只读模式打开会导致某些属性消失。例如,在 openpyxl 3.0.4 中以只读模式打开文件时,ws.merged_cells 不再作为属性存在:AttributeError: 'ReadOnlyWorksheet' object has no attribute 'merged_cells'
    • 感谢您的澄清。我遇到了row_dimensions 被搞砸的问题,但在read_only=False 中,可能不相关。
    • @otocan 在只读模式下有什么类似的事情吗? read_only 模式没有row_dimesnionscolumn_dimensions 的这些属性
    【解决方案2】:

    工作表具有 row_dimensionscolumn_dimensions 对象,其中包含有关特定行或列的信息,例如它们是否隐藏。列尺寸也可以分组,因此您在查看时需要考虑到这一点。

    【讨论】:

    • 但是 'read_only' 模式没有这些属性。有没有其他选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多