Openpyxl 与隐藏/显示 Excel 工作表

18 投票
1 回答
23207 浏览
提问于 2025-04-18 03:17

我有一段代码,它可以从一个用制表符分隔的文本文件中读取数据,然后把这些数据写入到一个已经存在的Excel工作簿中的指定工作表。变量“workbook”、“write_sheet”和“text_file”是用户输入的。

tab_reader = csv.reader(text_file, delimiter='\t')
xls_book = openpyxl.load_workbook(filename=workbook)
sheet_names = xls_book.get_sheet_names()
xls_sheet = xls_book.get_sheet_by_name(write_sheet)
for row_index, row in enumerate(tab_reader):
        number = 0
        col_number = first_col
        while number < num_cols:
                cell_tmp = xls_sheet.cell(row = row_index, column = col_number)
                cell_tmp.value = row[number]
                number += 1
                col_number += 1
xls_book.save(workbook)

但是,当我在一个已经存在的“workbook”上运行这段代码时,如果“worksheet”是一个隐藏的标签,输出结果会把这个标签显示出来。我觉得原因是因为openpyxl并不是在修改文件,而是完全创建了一个新文件。有没有简单的方法可以让Python检查工作表是否隐藏,然后根据这个条件决定输出一个隐藏的或显示的工作表呢?

谢谢!

1 个回答

38

目前,我们的 openpyxl 库不支持隐藏工作表,所以在读取文件时会忽略这个设置,保存时也会丢失。我觉得添加这个功能应该不难。如果你希望这个功能,可以在 Bitbucket 上提交一个请求。

[更新]

这个功能现在已经可以用了:

ws.sheet_state = 'hidden'

或者在你的具体情况下,可以使用 xls_sheet.sheet_state = 'hidden'

撰写回答