【问题标题】:Openpyxl and Hidden/Unhidden Excel WorksheetsOpenpyxl 和隐藏/未隐藏的 Excel 工作表
【发布时间】:2017-08-03 23:31:49
【问题描述】:

我有以下代码从制表符分隔的文本文件中读取数据,然后将其写入现有 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)

但是,当我在其中“工作表”是隐藏选项卡的预先存在的“工作簿”上运行此代码时,输​​出会取消隐藏选项卡。我认为原因是因为 openpyxl 没有修改文件,而是完全创建了一个新文件。有没有简单的方法告诉python检查工作表是否隐藏,然后根据是否满足条件输出隐藏或未隐藏的工作表?

谢谢!

【问题讨论】:

    标签: python excel openpyxl


    【解决方案1】:

    我们目前不支持在 openpyxl 中隐藏工作表,因此在读取文件时会忽略它,因此在保存时会丢失。我认为添加它应该不会太难。请在 Bitbucket 上提交功能请求。

    [更新]

    该功能现已推出:

    ws.sheet_state = 'hidden'
    

    或者在您的特定情况下实际上是xls_sheet.sheet_state = 'hidden'

    【讨论】:

    • 我刚刚检查了一份最近的副本,但情况似乎仍然如此。也许从未提交过任何问题。
    • 其实已经有一段时间了bitbucket.org/openpyxl/openpyxl/issue/309/…ws.sheet_state = 'hidden'
    • 我的检查确认 sheet_state 更改会持续到新保存的副本中,但是当 Excel 加载包含该工作表的工作簿时,它仍然会显示 sheet_state 设置为 "hidden" 的工作表。我应该提出问题吗?
    • 代码看起来应该保留值,但我看不到专门的测试(写一个简单的测试有点困难)。如果您认为它不起作用,请提交问题。也欢迎测试公关! ;-)
    • @CharlieClark,也许您可​​以更新答案,而不是将其隐藏在 cmets 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多