【问题标题】:Unable to lock columns in an excel sheet - xlsxwriter无法锁定 Excel 工作表中的列 - xlsxwriter
【发布时间】:2019-12-01 17:27:18
【问题描述】:

我正在尝试使用 xlsx 编写器仅锁定 Excel 工作表的几列。作者已经通过获取 panda 数据帧并使用 to_excel 转换它们生成了工作表。

当使用 xlsxwriter 的简单锁定和保护时(找到 here,整个工作表最终被锁定,而不是我选择的列中的特定单元格。这是我的代码:

writer = pd.ExcelWriter('workbook.xlsx', engine='xlsxwriter')
df2.to_excel(writer, 'Except', index=False, header=False)
df1.to_excel(writer, 'Rec', index=False, header=False)
workbook = writer.book
rec_sheet = writer.sheets['Rec']
except_sheet = writer.sheets['Except']

# adding lock/unlock capabilities
locked_format = workbook.add_format()
locked_format.set_locked(True)  
unlocked_format= workbook.add_format()
unlocked_format.set_locked(False)

# unlocking columns that need to remain unlocked
rec_sheet.set_column('AC:AD', None, unlocked_format)
except_sheet.set_column('AC:AD', None, unlocked_format)

# Enable worksheet protection
except_sheet.protect()
rec_sheet.protect()
#lock columns that need to remain locked
rec_sheet.set_column('A:AB', None, locked_format)
except_sheet.set_column('A:AB', None, locked_format)

我希望最终的 workbook.xlsx 有两个工作表,它们的列锁定到 AC 列。

【问题讨论】:

  • 你检查过这个链接吗? stackoverflow.com/questions/40885097/…
  • 当我添加一些示例数据帧时,上面的代码对我有用。直到 AC 列的单元格被锁定,之后的单元格被解锁。
  • @jmcnamara 它对我不起作用,当我单击应解锁的单元格 (AC3) 时,它给了我以下错误消息:“您要更改的单元格或图表是在受保护的工作表上。要进行更改,请取消保护工作表。可能会要求您输入密码。”当我取消保护工作表时,所有单元格都是可编辑的。
  • @suhas_Pete 我已经看到了那个链接,但没有解决我的问题。这里我是从数据框中选择,而不是直接写。

标签: python python-3.x pandas xlsxwriter


【解决方案1】:

它应该工作。我在您的示例中添加了一些示例数据框,并且能够写入单元格 AC3(但不是 AB3):

import pandas as pd

df1 = pd.DataFrame([10, 20, 30, 20, 15])
df2 = pd.DataFrame([10, 20, 30, 20, 15])

writer = pd.ExcelWriter('workbook.xlsx', engine='xlsxwriter')
df2.to_excel(writer, 'Except', index=False, header=False)
df1.to_excel(writer, 'Rec', index=False, header=False)
workbook = writer.book
rec_sheet = writer.sheets['Rec']
except_sheet = writer.sheets['Except']

# Adding lock/unlock capabilities.
locked_format = workbook.add_format()
locked_format.set_locked(True)  
unlocked_format= workbook.add_format()
unlocked_format.set_locked(False)

# Unlocking columns that need to remain unlocked.
rec_sheet.set_column('AC:AD', None, unlocked_format)
except_sheet.set_column('AC:AD', None, unlocked_format)

# Enable worksheet protection.
except_sheet.protect()
rec_sheet.protect()

# Lock columns that need to remain locked.
rec_sheet.set_column('A:AB', None, locked_format)
except_sheet.set_column('A:AB', None, locked_format)

writer.save()

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多