【问题标题】:Pandas to_excel with sheets being hidden, or efficiently hiding excel tabs?隐藏工作表或有效隐藏 Excel 选项卡的 Pandas to_excel?
【发布时间】:2021-07-13 05:03:53
【问题描述】:

创建和保存 df:

df = pd.DataFrame({'Attribute1': ['A', 'B'], 'Attribute2': ['X', 'Y']})
filename = 'test.xlsx'

writer = pd.ExcelWriter(filename, engine='xlsxwriter') 
with writer:
    df.to_excel(writer, sheet_name='df')
    df.to_excel(writer, sheet_name='2nd tab')

我想在工作表条件中添加 hidden=True 之类的内容,但要添加 pandas doesn't seem to support this

我们可以do this manually with openpyxl,但是对于大文件来说速度太慢了:

from openpyxl import load_workbook
wb = load_workbook(filename)
wb["df"].sheet_state='hidden'
wb.save(filename)

显然,最好的解决方案是不使用 Excel,但这是要求。有什么实用的方法来做到这一点?

【问题讨论】:

标签: python excel pandas openpyxl xlsxwriter


【解决方案1】:

您需要获取 XlsxWriter 工作表对象的句柄才能隐藏它。像这样:

import pandas as pd

df = pd.DataFrame({'Attribute1': ['A', 'B'],
                   'Attribute2': ['X', 'Y']})

filename = 'test.xlsx'

writer = pd.ExcelWriter(filename, engine='xlsxwriter')

with writer:
    df.to_excel(writer, sheet_name='df')
    df.to_excel(writer, sheet_name='2nd tab')

    # Get a handle to the worksheet.
    worksheet = writer.sheets['2nd tab']
    worksheet.hide()

输出:

如果您想隐藏第一个工作表,您需要做一些额外的工作,因为 Excel 不允许您隐藏“活动”工作表,它通常是第一个工作表。在这种情况下,您还需要“激活”另一个工作表。像这样:

with writer:
    df.to_excel(writer, sheet_name='df')
    df.to_excel(writer, sheet_name='2nd tab')

    worksheet = writer.sheets['df']
    worksheet.hide()

    worksheet = writer.sheets['2nd tab']
    worksheet.activate()

输出:

更多详情请看Working with Python Pandas and XlsxWriter

另请注意,您示例中的 datetime_format 参数不正确。这是 writer 类的属性,而不是 to_excel() 方法。我在上面的示例中省略了它。

【讨论】:

  • 完美,谢谢!我不知道with writer 可以这样使用。感谢您指出datetime_format 的问题。为了避免给其他人造成混淆,我已将其删除。
猜你喜欢
  • 2013-05-21
  • 2022-12-18
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
相关资源
最近更新 更多