Openpyxl 与隐藏/显示 Excel 工作表
我有一段代码,它可以从一个用制表符分隔的文本文件中读取数据,然后把这些数据写入到一个已经存在的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'
。