【发布时间】: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