gpt4 book ai didi

python - 如何使用openpyxl使Excel工作表中的所有列折叠全部隐藏或在启动Excel时显示?

转载 作者:行者123 更新时间:2023-12-01 08:29:05 25 4
gpt4 key购买 nike

我正在使用 openpyxl 修改现有的 Excel 文件。 Excel 文件中存在列折叠。我想编写一些代码,以便可以显示所有列折叠或隐藏所有列折叠。

我尝试使用此代码来实现我的目标。但是,有两个问题:

ws.column_dimensions.group(start='A', end='C', hidden=False)  

首先,列已经分组。但是,此代码仅在列尚未分组时对我有用。其次,隐藏参数似乎不会影响输出。事实上,无论我是否将标志设置为 False 到 True,我都会得到一个隐藏的组。

for col in ['A', 'B', 'C']:
ws.column_dimensions[col].hidden=False

我期望的是它会获取所有列组/折叠并关闭它们。相反,此代码隐藏了所有列(从 A 到 C)。

最佳答案

不太能回答您的问题,但这是我在对从谷歌表格生成的 .xlsx 文件进行源代码挖掘时发现的内容。首先,使用 unzip 解压缩 .xlsx 文件,然后进入 xl/worksheets/sheet1.xml 或等效文件。

假设我想创建三个嵌套大纲级别的分组列:

  • 最外层(顶部)级别从 6:40

  • 第二(中)级别从 6:13

  • 第三(底部)级别从 6:8

    它们跨越第 6-40 列。 (列号是从 'A' 开始的 1 索引)。以下是 xlsx 文件中的代码:

<cols>
<col min="6" max="8" outlineLevel="3"/>
<col min="9" max="13" outlineLevel="2"/>
<col min="14" max="40" outlineLevel="1"/>
</cols>

一些注意事项:

  • 列组永远不会重叠!如果它们这样做,它们会自动合并,这是不直观的。
  • 最底层的编号最高。最上面的是outlineLevel#1
  • “上面”的大纲级别(编号较低)将“吞没”较低的级别。因此,outlineLevel 1 最终将跨越 6:40,outlineLevel 2 将跨越 6:13

这是生成的 openpyxl 代码:

ws.column_dimensions.group(get_column_letter(6), get_column_letter(8),outline_level=3)
ws.column_dimensions.group(get_column_letter(9), get_column_letter(13),outline_level=2)
ws.column_dimensions.group(get_column_letter(14), get_column_letter(40),outline_level=1)

我会看看是否可以将一些内容添加到 https://stackoverflow.com/users/2385133/charlie-clark 的包文档中。这纯粹是 xlsx 规范(或行为)的细微差别,而不是 openpyxl 特定的。但如果 API 中提供了该示例,那就太好了。

编辑:如果您对行而不是列感兴趣,请在此处查看我的答案:https://stackoverflow.com/a/67203916/7018268

关于python - 如何使用openpyxl使Excel工作表中的所有列折叠全部隐藏或在启动Excel时显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54014529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com