使用openpyxl折叠多行

时间:2014-11-25 18:09:23

标签: openpyxl

有没有办法使用openpyxl折叠多行?似乎没有与openpyxl simple usage page上的示例等效的行。

import openpyxl
wb = openpyxl.Workbook(True)
ws = wb.create_sheet()
ws.column_dimensions.group('A','D', hidden=True)
wb.save('group.xlsx')

3 个答案:

答案 0 :(得分:6)

不,没有等价物,但行更容易处理,因为它们总是存在,ColumnDimensions是按需创建的。只需设置要隐藏的行即可。

EG。隐藏第5行到第9行:

for idx in range(5, 10):
    ws.row_dimensions[idx].hidden = True

答案 1 :(得分:1)

您可以使用row_dimensions.group方法进行操作

from openpyxl import Workbook

wb = Workbook()
ws = wb.create_sheet()
ws.column_dimensions.group("A", "D", hidden=True)
ws.row_dimensions.group(1, 5, hidden=True)
wb.save("group.xlsx")

答案 2 :(得分:0)

我一直在寻找这个,但只找到了我自己的答案,对列做同样的事情! https://stackoverflow.com/a/60214627

看起来有两种具有不同 API 的模式:1. 顶部的“抓取手柄”(-),以及 2.底部的抓取手柄。每种模式都有不同的奇怪的“逐一”行为,如下所示。

订单很重要!需要先定义外层,再定义内层。

需要三级大纲的示例代码。

  • 第 1 层(最外层)- 第 2-25 行
  • 第 2 级(最中间)- 第 4-9 行
  • 第 3 层(最里面)- 第 6-7 行

Google Sheets screenshot of output

#!/usr/bin/env python3
import openpyxl

wb = openpyxl.Workbook()
ws = wb.active
for i in range(1, 25+1):
  ws.append([i])

# Expand handle at bottom
# ws.sheet_properties.outlinePr.summaryBelow = True
# ws.row_dimensions.group(2, 25-1, outline_level=1)
# ws.row_dimensions.group(4, 9-1, outline_level=2)
# ws.row_dimensions.group(6, 7-1, outline_level=3)

# Expand handle at top
# NOTE: Order counts!
ws.sheet_properties.outlinePr.summaryBelow = False
ws.row_dimensions.group(2+1, 25, outline_level=1)
ws.row_dimensions.group(4+1, 9, outline_level=2)
ws.row_dimensions.group(6+1, 7, outline_level=3)

wb.save('testrows.xlsx')